ElasticSearch story(二)

调优一个问题,碰到了一个坎:大家看一下下面两个字符串:

2018-10-16 18:01:34.000 abcdewfrwfe

2018-10-16 18:01:50.123 testAmily012

我在使用term进行查询的时候:

{
  term:{
    message:abcdewfrwfe
  }
}

是可以检索到数据的,但是:

{
  term:{
    message:testAmily012
  }
}

却返回数据数据为0.

百思不得其解啊。通过index/_mapping,没看出来什么特别的;后来想到要看看到底es是怎样来分词的,于是查了一下,发现没有API查看现有的索引分词情况,但是有一个“分析器,可以通过这个分析器来模拟一下真是的分词情况,我顿时眼前一亮:

GET index/_analyze
{
  "analyzer": "standard",
  "text": "Text to analyze"
}

发现了什么?
变成了小写,是的变成了小写,所以我原样来进行查询是不可以的,我记起来之前确实看过一篇文章介绍,分词后将会变成小写,这样在处理查询的时候需要将查询内容处理为小写。

这个问题只是在term中有这个问题,如果是query-string则不需要。

原文地址:https://www.cnblogs.com/xiashiwendao/p/9801043.html