查询数字(如下面的数据)没有任何结果,但是可以找到逗号后的空格。
样本数据:
{
"data":"34543,2525,5674,879"
}
查询:
"query": {
"query_string" : {
"query" : "(data:2525)"
}
}
设置:
"analysis":{
"filter":{
"my_ascii_folding":{
"type":"asciifolding",
"preserve_original":"true"
}
},
"analyzer":{
"default":{
"filter":[
"lowercase",
"my_ascii_folding"
],
"char_filter":[
"html_strip"
],
"tokenizer":"standard"
}
}
}
例如,找到了2525
中的"34543, 2525, 5674, 879"
,但找不到"34543,2525,5674,879"
。
答案 0 :(得分:0)
没有更多信息,好像您正在使用标准标记器。您可以使用
展示如何分析您的令牌GET users/_analyze
{
"text": "34543, 2525, 5674, 879"
}
或
GET users/_analyze
{
"text": "34543,2525,5674,879"
}
如果您使用的是标准标记器,则34543,2525,5674,879只是倒排索引中的一个标记。当您搜索2525时,它将与该令牌不匹配。另一方面,将3453、2525、5674、879标记为四个没有逗号的标记。 2525与第二个令牌匹配。
如果您想解决此问题,则需要使用另一个总是在逗号上标记化的标记器,而不是仅在标记Indexing a comma-separated value field in Elastic Search的开头或结尾时使用