如何使用Elasticsearch索引MongoDB“id_”字段?

时间:2015-02-04 19:30:49

标签: mongodb elasticsearch

我将ElasticSearch与MongoDB一起使用,并希望在我的Elasticsearch索引中搜索ObjectID。

我的MongoDB包含以下条目:

{ "_id" : ObjectId("54ca06664ceb6693d37de155"), "blabla" : "xxxyyy"}

我尝试创建自定义映射,例如:

curl -XPOST "http://localhost:9200/myIndex/myType/_mapping" -d'
{
"myType":{
  "properties":{
    "_all": {
      "enabled": false
    },
    "_id": {
      "type": "string",
      "store": true,
      "index": "analyzed"
    },
    "blabla": {
      "type": "string",
      "store": true,
      "index": "analyzed"
    }
}

}'

但是当我想用

检查我的映射时
curl -XGET 'http://localhost:9200/_all/_mapping'

我无法看到_id映射。正在搜索" 54ca06664ceb6693d37de155"也不会返回任何结果。

出了什么问题?

1 个答案:

答案 0 :(得分:0)

_id字段是Elasticsearch中的默认主键,如mongoDB。虽然您没有找到_id字段的映射,但您可以使用以下查询搜索_id字段。了解更多信息refer this link.

您可以在退货文件中找到_id字段:

 {
"_index" :   "website",
"_type" :    "blog",
"_id" :      "123",
"_version" : 1,
"found" :    true,
"_source" :  {
  "title": "My first blog entry",
  "text":  "Just trying this out...",
  "date":  "2014/01/01"
 }
}

QUERY 1:

{
"query": {
    "terms": {
       "_id": [
          "VALUE1",
          "VALUE2"
       ]
    }
  }
}

QUERY 2:

{
  "query": {
    "term": {
       "_id": {
          "value": "VALUE"
          }
       }
    }
}