elasticsearch - 使用 Elastic Search 中的完成建议查询检查是否为空

标签 elasticsearch curl elastic-stack

我有一个现有查询,它为具有以下查询的邮政编码提供建议(我已经使用邮政编码将其硬编码为 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/

相关文章:

amazon-web-services - 如何配置 Winlogbeat 连接到 AWS elasticsearch

elasticsearch - 大半径的Elasticsearch地理距离查询优先级

elasticsearch - 将嵌套文档中的特定字段作为一个文档进行搜索

php - Symfony Elasticsearch配置文件不适用于多种类型的1个索引

linux - 从 'curl HEAD command' 获取日期值

elasticsearch - Filebeat添加不需要的空白字段

amazon-web-services - 仅从我的 VPC/子网访问 Elastic Search 互联网终端节点

haskell - "curl libraries?"在哪里

ruby - 使用curl下载需要登录的文件

elasticsearch - 与ELK查找日志中最常见的错误字符串