ES搜索——查询忽略大小写mapping设计

1、创建索引,并设计mapping

关键参数:"normalizer": "lowercase"

PUT aikg_test
{
  "mappings": {
    "properties": {
      "name": {
        "type": "keyword",
        "normalizer": "lowercase"
      }
    }
  },
  "settings": {
    "analysis": {
      "normalizer": {
        "lowercase": {
          "type": "custom",
          "filter": [
            "lowercase"
          ]
        }
      }
    }
  }
}

2、示例查询

2.1、增加数据
POST aikg_test/_bulk
{ "index": {} }
{"name": "Xiao Liu"}
{ "index": {} }
{"name": "xiao liu"}
2.2、查询数据

用大写作参数值

GET aikg_test/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "prefix": {
            "name": {
              "value": "XIAO"
            }
          }
        }
      ],
      "minimum_should_match": 1
    }
  },
  "profile": "true"
}

查询结果:

image.png

如果不设置参数:"normalizer": "lowercase",大小写完全匹配。设置后,大小写相互匹配。

你可能感兴趣的:(ES搜索——查询忽略大小写mapping设计)