带有冒号的ElasticSearch词查询

xa9qqrwz  于 2023-01-25  发布在  ElasticSearch
关注(0)|答案(1)|浏览(231)

我在elasticsearch中有一个字符串字段“title”(未分析)。一个文档的标题为“加菲猫2:两只小猫的尾巴(2006)"。
当我使用下面的JSON进行查询时,没有返回任何结果。

{"query":{"term":{"title":"Garfield 2: A Tail Of Two Kitties (2006)"}}}

我试着转义冒号和大括号,比如:

{"query":{"term":{"title":"Garfield 2\\: A Tail Of Two Kitties \\(2006\\)"}}}

还是不行。

4bbkushb

4bbkushb1#

术语查询不会对搜索文本进行标记化或应用分析器。相反,如果查找完全匹配,则不会工作,因为默认情况下会分析/标记化字符串字段。
给予更好的解释-
假设有一个字符串值为-“I am in summer:camp”当索引这个时,它被分解成如下标记-

"I am in summer:camp" => [ I , am , in , summer , camp ]

因此,即使你搜索“I am in summer:camp”,它也不会起作用,因为“I am in summer:camp”标记不在索引中。类似phrase query的东西在这里可能更好。或者你可以将“index”字段保留为“not_analyzed”,以确保字符串没有被标记化。

相关问题