首页 > 解决方案 > Elasticsearch:参数“include”不区分大小写

问题描述

如何在 elasticsearch 中配置索引以使聚合中的参数“include”不区分大小写?

I have this index:

    PUT index {"settings":
              {"analysis": {
              "analyzer": {
                "my_normalizer": {
                  "type": "custom",
                  "tokenizer": "keyword",
                  "char_filter": ,
                  "filter": ["lowercase"]}}}},
                "mappings":{
                  "_doc":{
                   "properties":{
                       "foo": {
                         "type": "text",
                         "analyzer": "my_normalizer",
                         "fielddata": true}}}}}
With data:


       PUT index/_doc/1 {
           "foo": "BAR"
             }
       PUT index/_doc/2 {
           "foo": "bar"
             }

And the query:

    GET index/_search{
         "size": 0,
          "aggs": {
             "ad":{
               "terms": {"field": "foo",
               "include": "ba.*"}}}}

但是,如果我在“BA”中更改“ba”,则聚合没有结果。你能帮助我吗?

标签: elasticsearch

解决方案


我相信在术语聚合中,您提供的术语没有被分析,因此当您BA在那里提供时,ES 不会小写。应用程序应小写您在聚合中提供的术语。这是假设您想要不区分大小写的结果。如果您想要区分大小写的结果(BA和的不同结果ba),您首先不应该使用小写分析器。


推荐阅读