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",大小写完全匹配。设置后,大小写相互匹配。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容