es关键字类型的最简单小写示例

时间:2018-11-01 04:22:34

标签: elasticsearch

我想忽略搜索时的大小写。这样做最不冗长的方法是什么。例如,类似:

"mappings": {
  "_doc": {
    "properties": {
      "name": {"type": "keyword", "analyzer": "ignore_case"}
    }
  }
}

以上是伪代码,但是执行此操作的最佳方法是什么?基本上我想说一个像这样的词:

"Hello"

并让“ Hello”或“ HELLO”或“ hELlo”或“ hello”与之匹配。

1 个答案:

答案 0 :(得分:3)

关键字数据类型不使用Analyzers。您需要使用Normalizer

如果您打算在这种情况下使用keyword,则需要创建一个filter配置为lowercase的自定义Normalizer,并且您的映射应如下所示:

PUT <your_index_name>
{  
   "settings":{  
      "analysis":{  
         "normalizer":{  
            "my_custom_normalizer":{  
               "type":"custom",
               "filter":[  
                  "lowercase"
               ]
            }
         }
      }
   },
   "mappings":{  
      "mydocs":{  
         "properties":{  
            "mytext":{  
               "type":"keyword",
               "normalizer":"my_custom_normalizer"
            }
         }
      }
   }
}

我认为这是最冗长的方法!希望对您有帮助!