2012-02-04 3 views
11

좋아, 그래서 나는 인터넷에서 MongoDB와 Elasticsearch를 설정하는 방법에 관한 문서를 찾았다. 주 탄력 서치 github repo에는 Mongodb river plugin이 있지만 문서는없는 것으로 보입니다. 누구도 함께 일할이 멋진 기술을 얻었습니까?Elasticsearch에 MongoDB river 설정하기

+21

쉘을 - 그것이 될 운명이되었다 강. –

답변

17

이것은 다소 오래된 질문이지만, 다른 사람들이 같은 질문에 궁금해 할 때를 대비해서, 특히 새로운 버전의 ES가 항상 나오는 경우를 대비해서 대답을 게시 할 것입니다. 내 ES가 MongoDB에서도 작동하는 데는 어느 정도 시간이 걸렸습니다.

  1. 먼저 ES와 MongoDB가 설치되어 있다고 가정합니다. 복제 세트를 사용하지 않는 경우 oplog가 활성화되어 있는지 확인하십시오. 방법은 here을 참조하십시오.

  2. 강 플러그인에는 종속성 (elasticsearch-mapper-attachments)이 있으므로 나중에 문제가 발생하지 않도록 설치해야합니다. 이 wiki에는 플러그인을 설치하는 데 필요한 명령이 있습니다. ES 0.20.2 이상을 사용하는 경우 강 플러그인에 대한 대체 다운로드 링크를 기록해 두십시오.

  3. ES를 다시 시작하십시오. curl -XGET 'http://localhost:9200/mongoindex/_search?q=field:value'

내가 this website에서 내 대부분의 정보를 가지고 사용하여 검색을 수행하려면

curl -XPUT 'http://localhost:9200/_river/mongodb/_meta' -d ' 
{ 
    "type": "mongodb", 
    "mongodb": { 
     "db": "your-database-name", 
     "collection": "your-collection-name" 
    }, 
    "index": { 
     "name": "mongoindex", 
     "type": "your-type" 
    } 
}' 
  • ,하지만 난 그것을 할 수 느낌 :

  • 는 인덱싱을 사용하려면 다음 명령을 사용하여 더 많은 유선형, 따라서 내 자신의 접근 방식.

  • 0

    특정 구성에서 작동합니다. elasticsearch river plugin과 mongodb의 버전은 전체 시스템이 작동하는 데 필수적 일 수 있습니다. 여기

    는 단계)

    1 환경을 작동 elasticsearch 버전 1.2.4를 사용하여 재현된다. https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.2.4.deb

    가) dpkg -i /path/to/elasticsearch-1.2.4.deb

    2를 설치 강 플러그인 및 종속성 설치 : 우분투를위한 포장은 여기에 있습니다 사용할 수 매퍼 atachments 플러그인의

    cd /usr/share/elasticsearch && bin/plugin --install elasticsearch/elasticsearch-mapper-attachments/1.9.0 
    cd /usr/share/elasticsearch && bin/plugin --install com.github.richardwilly98.elasticsearch/elasticsearch-river-mongodb/2.0.1 
    

    최신 버전있다, 그러나 공식 위키 mongo river plugin은 1.9.0을 사용하도록 제안합니다.

    3) MongoDB v2.4.9는 반드시 elasticsearch river plugin과 함께 작동합니다. 당신이 복제 세트가 MongoDB를 개시되어 있는지 확인해야합니다 확실 mongod는 --replSet rs0으로 시작됩니다 만들거나 당신이 mongod.conf 다음에 replSet=rs0 있습니다

    mongo 
    

    그런 다음 입력 : 로그인은 콘솔이 몽고하는

    rs.initiate() 
    rs.status() 
    

    4) 준비가 끝났습니다. 이제 elasticsearch river plugin을 초기화해야합니다.당신이 elasticsearch 로컬 호스트에서 실행했다고 가정 : 9200 및 MongoDB를가 몽고 서버에 10.0.2.15:27017

    curl -XPUT "localhost:9200/_river/feed/_meta" -d" 
         { 
          \"type\": \"mongodb\", 
          \"mongodb\": { 
           \"servers\": [ 
           {\"host\": \"10.0.2.15", \"port\": 27017} 
           ], 
           \"db\": \"YOUR_DB\", 
           \"collection\": \"YOUR_COLLECTION\" 
          }, 
          \"index\": { 
           \"name\": \"YOUR_ELASTIC_INDEX\", 
           \"type\": \"item\" 
          } 
         }" 
    

    5) 확인 rs.config()에 있습니다. mongodb river plugin에서 연락 할 수있는 복제 세트 구성원의 해결 가능한 호스트 이름 또는 ips가 있어야합니다. Elasticsearch river plugin은 mongodb.servers에 지정된 호스트에 연결하고 replica config를 가져옵니다. 그런 다음 rs.config()에 지정된 호스트 이름으로 설정된 복제본의 기본 호스트에 연결을 시도합니다. 강치 플러그인을 통해 monogdb와 elasticsearch를 상호 연결하는 도커 컨테이너를 사용하려는 경우 문제가 발생합니다.

    당신은 수행하여 RS의 설정을 업데이트 할 수있는 다음 :

    mongo 
    

    다음 몽고에에 "드라이버" "강"을 편집 한 사람에

    cfg = rs.config() 
    cfg.members[0].host = "12.34.56.78:27017" 
    rs.reconfig(cfg) 
    
    관련 문제