在Elasticsearch中按字段搜索包含逗号

时间:2013-05-21 11:16:08

标签: search elasticsearch

我们的系统中有用户,他们的昵称可以包含逗号,这是Elasticsearch用于单独值的特殊字符。我存储了以下用户:

 {
    "nickname" : "John"
 }

 {
    "nickname" : "John,2"
 }

如果我执行查询nickname:John,我会得到两份不符合预期的文件。

我不确定我需要什么。我的意思是一个标记器,一个分析器......

提前致谢

1 个答案:

答案 0 :(得分:2)

默认情况下,ElasticSearch会对字符串字段进行分析,这就是为什么第二个用户使用2个术语编制索引:“John”和“2”并匹配您的nickname:John查询。

如果您不希望分析您的昵称(视为单个字符串),则必须明确将此字段的映射设置为“关键字”。

有关该问题的更多信息:http://www.elasticsearch.org/guide/reference/index-modules/analysis/keyword-analyzer/以及地图API:http://www.elasticsearch.org/guide/reference/api/admin-indices-put-mapping/