如何在elasticsearch中添加不区分大小写的搜索和模式分析器

时间:2018-02-16 08:28:56

标签: elasticsearch

在我的弹性搜索中,我为以下字段添加了如下分析器,我将以逗号分隔的方式存储技能。

"skills": "Java,Engineer(IT, Non-IT),python"

这里我想索引用逗号分隔的每个字符串。在搜索中,用户可以搜索Java,Java或JAVA。技能可以在任何情况下。因此搜索应该不区分大小写。即,如果搜索是“java”,那么它应该给出带有Java或java JaVa等的记录。

这是我正在使用的分析仪。在这里,我需要进行哪些更改才能返回最大记录,无论情况如何。

     { 
   "analysis": {
       "analyzer": {

     "pattern_analyzers": {
          "tokenizer": "custom_pattern_tokenizer",
          "lowercase": true
           }
        },
       "tokenizer": {
           "custom_pattern_tokenizer": {
               "pattern": ",(?![^(]*\))",
               "type": "pattern"
            }
         }
      }

注意:我使用的是elasticsearch版本2.4

1 个答案:

答案 0 :(得分:0)

尝试将lowercase过滤器添加到您的分析器中:

"analysis": {
  "analyzer": {
    "pattern_analyzers": {
      "tokenizer": "custom_pattern_tokenizer",
      "filter": ["lowercase"]
    }
  },
  "tokenizer": {
    "custom_pattern_tokenizer": {
      "pattern": ",(?![^(]*\))",
      "type": "pattern"
    }
  }
}

文档:https://www.elastic.co/guide/en/elasticsearch/reference/6.2/analysis-lowercase-tokenfilter.html