我有一个现有查询,它为具有以下查询的邮政编码提供建议(我已经使用邮政编码将其硬编码为 T0L)
"suggest":{
"suggestions":{
"text":"T0L",
"completion":{
"field": "postcode.suggest"
}
}
}
这工作正常,但它会搜索城市包含空值的一些结果。所以我需要过滤城市不为空的地址。
所以我遵循了 this 上的解决方案并准备这样的查询。
{
"query": {
"constant_score": {
"filter": {
"exists": {
"field": "city"
}
}
}
},
"suggest":{
"suggestions":{
"text":"T0L",
"completion":{
"field": "postcode.suggest"
}
}
}
}
但不幸的是,这并没有提供邮政编码包含 T0L 的所需地址,而是我得到的结果是邮政编码以 A1X 开头。所以我相信它正在查询城市所在的所有地址并忽略完成建议查询。你能告诉我错误在哪里吗?或者可能是如何正确编写它。
最佳答案
无法在查询时过滤掉建议,因为completion
suggester 使用 FST(在索引时构建的特殊内存数据结构)进行闪电般的快速搜索。
但是您可以更改映射并添加 context对于你的建议者。上下文的基本思想,它也在索引时与 completion
字段一起填充,因此可以在查询时与 suggest
查询一起使用。
关于elasticsearch - 使用 Elastic Search 中的完成建议查询检查是否为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52277147/