2

我在弹性搜索中有一个字符串字段“标题”(未分析)。一份文件的标题是“加菲猫 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\\)"}}}

还是行不通。我被困在这里。谁能帮帮我?

4

1 回答 1

2

术语查询不会对搜索文本进行标记或应用分析器。相反,如果查找在默认情况下对字符串字段进行分析/标记化时不起作用的完全匹配。

为了给这个更好的解释 -

假设有一个字符串值 - “我在夏天:camp”当索引它时,它被分解为如下标记 -

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

因此,即使您对 "I am in summer:camp" 进行术语搜索,它仍然无法正常工作,因为索引中不存在 "I am in summer:camp" 标记。像短语查询这样的东西在这里可能会更好。或者您可以将“index”字段保留为“not_analyzed”,以确保该字符串未被标记。

于 2015-04-18T04:25:59.367 回答