我在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\\)"}}}
仍然无法正常工作。我被困在这里。谁能帮助我?
答案 0 :(得分:1)
术语查询不会将分析器标记化或应用于搜索文本。相反,如果查找默认情况下分析/标记化字符串字段不起作用的完全匹配。
为此提供更好的解释 -
让我们说有一个字符串值 - “我在夏天:营地” 将其分解为标记时,如下所示 -
"I am in summer:camp" => [ I , am , in , summer , camp ]
因此,即使你做了一个术语搜索“我在夏天:阵营”,它仍然不能作为标记“我在夏天:阵营”在索引中不存在。 类似phrase query之类的东西可能会更好用。 或者,您可以将“index”字段保留为“not_analyzed”,以确保字符串不会被标记化。