簡體   English   中英

使用ElasticSearch索引mongoDB

[英]Index mongoDB with ElasticSearch

我已經擁有MongoDB並使用Mongoriver安裝了Elasticsearch。 所以我建立了我的河流:

$ curl -X PUT localhost:9200/_river/database_test/_meta -d '{
  "type": "mongodb",
  "mongodb": {
    "servers": [
      {
        "host": "127.0.0.1",
        "port": 27017
      }
    ],
    "options": {
      "secondary_read_preference": true
    },
    "db": "database_test",
    "collection": "event"
  },
  "index": {
    "name": "database_test",
    "type": "event"
  }
}'

我只是想得到有country:Canada事件country:Canada所以我嘗試:

$ curl -XGET 'http://localhost:9200/database_test/_search?q=country:Canada'

我得到:

{
  "took": 2,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "failed": 0
  },
  "hits": {
    "total": 0,
    "max_score": null,
    "hits": []
  }
}

我在網上搜索,我讀到我應該首先用Elasticsearch索引我的收藏(丟失鏈接)。 我應該索引我的Mongodb嗎? 如何從現有的MongoDB集合中獲取結果?

mongodb河依賴於MongoDB的操作日志來索引文檔,因此需要將mongo數據庫創建為副本集。 我假設你錯過了它,所以當你創建河流時,初始導入看不到索引。 我也假設您使用的是Linux,並且掌握了shell cli工具,請嘗試以下操作:

跟着這些步驟:

  • 確保還安裝了映射器附件Elasticsearch插件
  • 使用mongodump備份數據庫
  • 編輯mongodb.conf(通常在/etc/mongodb.conf中,但在安裝方式上有所不同)並添加以下行:

    replSet = rs0

    “rs0”是復制品的名稱,它可以是您喜歡的任何名稱。

  • 重啟你的mongo然后登錄它的控制台。 類型:

    rs.initiate()
    rs.slaveOk()

提示符將更改為rs0:PRIMARY>

  • 現在就像在問題中一樣創建你的河流,並使用mongorestore恢復你的數據庫。 Elasticsearch應該索引您的文檔。

我建議使用這個插件: http//mobz.github.io/elasticsearch-head/來瀏覽你的索引和河流,並確保你的數據被索引。

如果這不起作用,請發布您用於mongodb-river-plugin,elasticsearch和mongodb的版本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM