首页 > 解决方案 > 带连字符的 elasticsearch 查询字符串

问题描述

弹性搜索 5.6

我将我的字段定义为文本字段,并带有空格分析器,以避免在连字符上拆分。

我想使用查询字符串查询来查询它,例如:

{
    "query": {     
      "query_string": {
        "query": "CODE-13-006",
        "default_operator": "AND",
        "analyzer": "whitespace"
      }
   }
}

因此,如果我没有指定要搜索的字段,(据我所知)它应该查询“*”字段。即使像上面这样的查询没有返回任何内容,但如果我要求特定字段,它会找到匹配项。

有什么提示吗?

标签: elasticsearchquery-string

解决方案


好的,万一有人有类似的疑问......

我的问题是,即使我正在查询 _all 字段(连接所有其他字段的值),我忘记了默认情况下它使用标准分析器(在连字符上分隔标记)。因此,即使我的字段使用关键字分析器,在我的 _all 查询中我也找不到它 - 仅仅是因为它被标准分析器拆分了。

愚蠢的错误,但也许将来会帮助某人;)


推荐阅读