我在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\\)"}}}
还是不行。
1条答案
按热度按时间4bbkushb1#
术语查询不会对搜索文本进行标记化或应用分析器。相反,如果查找完全匹配,则不会工作,因为默认情况下会分析/标记化字符串字段。
给予更好的解释-
假设有一个字符串值为-“I am in summer:camp”当索引这个时,它被分解成如下标记-
因此,即使你搜索“I am in summer:camp”,它也不会起作用,因为“I am in summer:camp”标记不在索引中。类似phrase query的东西在这里可能更好。或者你可以将“index”字段保留为“not_analyzed”,以确保字符串没有被标记化。