ElasticSearch에 MongoDB 데이터 자동 동기화

2960 단어 ElasticsearchMongoDB
저희 제품에는 전체 텍스트 검색 기능이 필요합니다. 백엔드 데이터 저장소는 주로 MySQL + MongoDB를 사용하고 그 중에서 검색해야 할 내용은 MongoDB에 있습니다.
MongoDB 자체는 텍스트 인덱스 기능을 가지고 있지만 중국어는 지원되지 않습니다.기술은 전공이 있고 MongoDB는 데이터 저장 응용 프로그램이다. 그러면 전문 검색은 전문적인 전문 검색 엔진을 사용하자.
예선에 참가한 몇 명의 선수는 Solr, Elastic Search, Xapian, Sphinx, Xun Search이다.우리의 데이터량이 비교적 많기 때문에 현재 단독기기가 이미 약간 힘이 든다고 생각한다. 몬고DB도 분할을 계획하기 시작했다. 그러면 전문 검색은 분포식 기술을 가지고 있으면 가장 적합하다.일련의 고려 끝에 우리는 Elastic Search를 사용하기로 결정했다.
현재 백엔드 프로그램은 직접 데이터를 MongoDB에 쓴다. 나는 프로그램 코드를 수정하고 싶지 않다. MongoDB의 데이터를 삭제하는 동시에 ElasticSearch의 데이터를 삭제하고 싶지 않다.MongoDB에서 데이터를 전송할 때 자동으로 ElasticSearch에 동기화하면 ElasticSearch를 가장 빨리 사용할 수 있습니다.
처음에 제가 찾은 방안은 Elastic Search의 River를 이용하여 데이터를 동기화하는 것입니다. 그리고 GitHub에서 MongoDB River 플러그인:elasticsearch-river-mongodb를 사용했습니다.그러나 그 후에 저는 Elastic Search 홈페이지에서 이 블로그를 보았습니다:'Deprecating Rivers'는 공식적으로는 1.5 이후 버전에서 River를 사용하고 사용자의 이전을 위해 2.0 버전까지 보류할 것입니다.
그래서 나는 다른 방안을 찾아야 한다.그리고 나는 또 인터넷에서 또 다른 방안을 찾았다. 몬고-connector.이것은 MongoDB 공식 개발자가 Python으로 쓴 도구입니다. 현재 MongoDB의 데이터를 Solr, ElasticSearch, MongoDB에 동기화하고 사용자 스스로 확장하는 것을 지원합니다.README의 면책 성명을 보고 나는 이것이 표 놀이의 도구라고 생각했지만 한번 해보자는 마음으로 한번 해보자고 결정했다.
다음은 배포 프로세스입니다.
  • MongoDB는 복제 세트를 열어야 합니다. 이 단계를 무시하십시오. 복제 세트의 이름을 설정하십시오:mongod --replSet myDevReplSet 몬고 셸에서 복제 집합 초기화:rs.initiate()
  • ElasticSearch를 설치합니다. 이미 설치되어 있으면 이 단계를 무시하십시오..
  • mongo-connector 설치: pip:
    yum install python-setuptools && easy_install pip
    pip를 통해 mongo-connector:
    pip install mongo-connector
  • 몬고 커넥터 실행:
    mongo-connector -m 127.0.0.1:27017 -t 127.0.0.1:9200 -d elastic_doc_manager

  • OK, 이제 MongoDB에서 데이터를 삭제하면 바로 ElasticSearch에 동기화할 수 있습니다.시용 과정에서 몬고-connector는 두 번 퇴출되었는데 그 중 한 번은 끊어진 지 너무 오래되어 발견하지 못해 나는 다시 동기화되어야 했다.여전히 좀 믿을 수 없는 느낌입니다. 몬고-connector가 백스테이지에서 열심히 일할 수 있도록 수호 프로그램을 따로 써야 할 것 같습니다.
    확장 읽기:
  • mongodb+elasticsearch로 중국어 검색을 실현합니다
  • Mongo Connector와 Elasticsearch를 사용하여 모호하게 일치합니다

  • 원문 링크:https://segmentfault.com/a/1190000003773614

    좋은 웹페이지 즐겨찾기