在ElasticSearch结果中显示不匹配的单词 [英] Showing unmatched word in elasticsearch results
本文介绍了在ElasticSearch结果中显示不匹配的单词的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我要显示返回文档的多字查询不匹配的字。是否有实现此目的的查询类型或参数?
正常情况下,此类不匹配的单词会以删除线字体显示给用户:
我得到答案后的查询示例:
POST /posts/_search
{
"query": {
"bool": {
"should": [
{"match": {"name": {"query": "jogging rain"}}},
{"match": {"name": {"query": "jogging", "_name": "jogging"}}},
{"match": {"name": {"query": "rain", "_name": "rain"}}}
]
}
}
}
现在,如果我们找到包含单词jogging
而不是rain
的文档,我们会得到如下结果:
{
"_source": {
"name": "jogging"
},
"matched_queries": [
"jogging"
]
}
那么下一步我从最初的搜索中减去matched_queries
,即"jogging"
的内容,即"jogging rain"
,结果"rain"
就是我想要的。
感谢@val关于如何解决此问题的想法!
推荐答案
您可以为此使用named queries,方法是为每个查询指定一个名称。在结果中,每个命中将具有一个matched_queries
数组,其中包含匹配的查询的名称(例如,下面的unmatched_query
和strikethrough_query
)。然后,您可以在客户端使用该信息构建不匹配单词的删除线列表。
{
"query": {
"bool": {
"should": [
{
"match": {
"content": {
"query": "unmatched",
"_name": "unmatched_query"
}
}
},
{
"match": {
"content": {
"query": "strikethrough",
"_name": "strikethrough_query"
}
}
}
]
}
}
}
这篇关于在ElasticSearch结果中显示不匹配的单词的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文