_source字段上的Elasticsearch搜索无效

时间:2017-04-03 14:49:01

标签: elasticsearch

我在弹性搜索5中有一个文档,如下所示

{
  "_index": "my_index",
  "_type": "json",
  "_id": "document_id",
  "_score": 1,
  "_source": {
    "message": "{\"the_id\": \"custom_id\", \"more\": \"Data\"}",
    "type": "json",
    "the_id": "custom_id",
    "@timestamp": "2017-04-03T13:31:39.995Z",
    "port": 48038,
    "@version": "1",
    "host": "127.0.0.1"
  }
}

当我使用Kibana控制台查询 _id 时如下,它正常工作并获得记录

 GET _search
{
  "query": { 
    "bool": { 
      "filter": [ 
        { "term":  { "_id": "document_id" }} 
      ]
    }
  }
}

但如果我要查询_source级别字段,在这种情况下 the_id ,则不会得到任何结果。

 GET _search
{
  "query": { 
    "bool": { 
      "filter": [ 
        { "term":  { "the_id": "custom_id" }} 
      ]
    }
  }
}

如何确保始终能够查询_source级别。

1 个答案:

答案 0 :(得分:2)

作为此案例中使用的默认映射,elasticsearch会为您的the_id字段创建多字段(the_id.keywordthe_id)。此处the_id将使用text类型映射创建,the_id.keyword将使用keyword类型映射创建。

由于字词查询与字段的exact value匹配,您必须在查询中提供the_id.keyword

要了解有关它的更多信息,请阅读官方文档here

中的为什么术语查询不符合我的文档?