ElasticSearch中的大小写搜索

时间:2019-03-14 14:02:06

标签: elasticsearch

我被迫通过电子邮件搜索问题。电子邮件具有关键字类型。一些用户添加的电子邮件中包含大写字母,因此我无法通过 term 构造来搜索所有电子邮件。我在本地尝试将关键字更改为文本,但是出现了新问题。 示例:通过email@gmail.com进行搜索-Elastic将此电子邮件拆分为多个部分,并返回错误结果:email @ site.com,new @ gmail.com等。 通过弹性进行这种搜索的最佳方法是什么? (最好避免完全重新索引)

ElasticSearch 6.6.1

"mappings": {
        "_doc": {
            "properties": {
                "email": {
                    "type": "text"
                }

1 个答案:

答案 0 :(得分:1)

您将不得不为索引重新索引(或使用不区分大小写的分析器添加辅助字段并对该字段进行查询,删除第一个字段并重命名字段名,但这可能会有些复杂)。确实,就好像您可以通过关闭和重新打开索引来添加分析器一样,elastic必须重新索引较旧的数据。

对于分析仪,您可以使用小写字母。

    "analyzer":{
      "analyzer_lowcase":{
        "tokenizer":"keyword",
        "filter":"lowercase"
      }