我正在尝试在Elasticsearch 6.2.4中使用过滤器上下文,但获得了0次点击。
查询:
{
"query": {
"bool": {
"must": {
"multi_match": {
"query": "test",
"fields": ["title", "labels.*", "type"]
}
},
"filter": {
"term": {
"labels.type": "PTR"
}
}
}
}
}
没有过滤器上下文的同一查询将返回我期望的结果。这是其中之一:
{
"_index": "events",
"_type": "event",
"_id": "5b4853759a04ac31cc3e49ea",
"_score": 5.3941264,
"_source": {
"source": "source1",
"title": "title1",
"creation_date": "2018-07-13T07:23:33.983Z",
"event_date": "2018-07-09T07:53:55.000Z",
"labels": {
"tags": "tag1",
"status": "confirmed",
"type": "PTR"
}
}
}
我尝试将“ labels.status”:“已确认” 更改为“ _ source.labels.status”:“已确认” 。
为什么此功能适用于状态,但不适用于类型?
编辑:此搜索适用于“查询”:“测试” ,因为“测试” 是“ labels.description” 的一部分字段(一个很长的字符串),我省略了。
答案 0 :(得分:0)
您如何获得结果?您甚至没有在提及的任何字段“测试” 中:[“标题”,“标签。*”,“类型”] ?< / p>
对于您的过滤器上下文,请使用以下命令:
"filter": {
"term": {
"labels.type.keyword": "PTR"
}
}