如何对字段进行敏感和不敏感的大小写搜索

时间:2018-10-04 12:00:13

标签: elasticsearch

当我像这样使用小写过滤器时,我可以不敏感地对foo字段进行大小写搜索,但是,我不能敏感地对foo字段进行大小写搜索。 就我而言,我需要根据情况决定对foo字段进行不区分大小写的大小写搜索。

{
  "settings": {
    "analysis": {
      "normalizer": {
        "lowercase_keyword": {
          "type": "custom",
          "filter": [
            "lowercase"
          ]
        }
      }
    }
  },
  "mappings": {
    "annotation_type": {
      "properties": {
        "foo": {
          "type": "keyword"
          "normalizer": "lowercase_keyword"
        }
      }
    }
  }
}

1 个答案:

答案 0 :(得分:0)

想法是使用两个keyword字段,如下所示:

  "mappings": {
    "annotation_type": {
      "properties": {
        "foo": {
          "type": "keyword",
          "fields": {
            "insensitive": {
              "type": "keyword",
              "normalizer": "lowercase_keyword"
            }
          }
        }
      }
    }
  }

然后,您可以使用foo进行区分大小写的搜索,并使用foo.insensitive进行不区分大小写的搜索。