如何在Elasticsearch中用逗号查找数字?

时间:2019-02-21 19:48:54

标签: elasticsearch elasticsearch-dsl elasticsearch-query

查询数字(如下面的数据)没有任何结果,但是可以找到逗号后的空格。

样本数据:

{
  "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"

1 个答案:

答案 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的开头或结尾时使用