我在弹性搜索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级别。
答案 0 :(得分:2)
作为此案例中使用的默认映射,elasticsearch会为您的the_id
字段创建多字段(the_id.keyword
和the_id
)。此处the_id
将使用text
类型映射创建,the_id.keyword
将使用keyword
类型映射创建。
由于字词查询与字段的exact value
匹配,您必须在查询中提供the_id.keyword
。
要了解有关它的更多信息,请阅读官方文档here
中的为什么术语查询不符合我的文档?