_source 字段上的 Elasticsearch 搜索不起作用

sud*_*shu 3 elasticsearch

我在elastic-search 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"
  }
}
Run Code Online (Sandbox Code Playgroud)

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

 GET _search
{
  "query": { 
    "bool": { 
      "filter": [ 
        { "term":  { "_id": "document_id" }} 
      ]
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我查询 _source 级别字段(在本例中为the_id ),则不会得到任何结果。

 GET _search
{
  "query": { 
    "bool": { 
      "filter": [ 
        { "term":  { "the_id": "custom_id" }} 
      ]
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

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

avr*_*avr 5

作为本例中使用的默认映射,elasticsearch 会为您的字段创建多个字段(the_id和) 。这里将使用类型映射创建,并将使用以下命令创建the_id.keywordthe_idthe_idtextthe_id.keywordkeyword,并将使用类型映射

\n\n

exact value当术语查询与字段匹配时,您必须提供the_id.keyword,因此您必须在查询中提供。

\n\n

要了解更多相关信息,请阅读“为什么\xe2\x80\x99t 术语查询与我的文档不匹配?”部分。在官方文档中在这里的

\n