使用冒号的弹性搜索术语查询

时间:2015-04-18 03:30:28

标签: elasticsearch escaping colon braces

我在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 个答案:

答案 0 :(得分:1)

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

为此提供更好的解释 -

让我们说有一个字符串值 - “我在夏天:营地” 将其分解为标记时,如下所示 -

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

因此,即使你做了一个术语搜索“我在夏天:阵营”,它仍然不能作为标记“我在夏天:阵营”在索引中不存在。 类似phrase query之类的东西可能会更好用。 或者,您可以将“index”字段保留为“not_analyzed”,以确保字符串不会被标记化。