es-已有mapping,实现查询不区分大小写

这篇具有很好参考价值的文章主要介绍了es-已有mapping,实现查询不区分大小写。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、写在前面

es查询默认区分大小写

二、实现原理

normalizer是 keyword的一个属性

参考

听说你还没掌握 ElasticSearch Normalizer 的使用方法?_yinni11的博客-CSDN博客

二、实现区分大小写的三种方案

 方案一:直接创建对应的mapping

适用于还没有创建mapping的场景

PUT testIndex

{
    "settings":{
        "index":{
            "number_of_shards":"14",
            "number_of_replicas":"2",
            "analysis":{
                "normalizer":{
                    "lowercase_normalizer":{
                        "filter":[
                            "lowercase"
                        ],
                        "type":"custom",
                        "char_filter":[

                        ]
                    }
                }
            }
        }
    },
    "mappings":{
        "person":{
            "dynamic_templates":[
                {
                    "notanalyzed":{
                        "match_mapping_type":"string",
                        "mapping":{
                            "index":true,
                            "type":"keyword"
                        }
                    }
                }
            ],
            "dynamic":true,
            "enabled":true,
            "properties":{
                "id":{
                    "type":"long"
                },
                "testLower":{
                    "type":"keyword",
                    "normalizer":"lowercase_normalizer"
                }
            }
        }
    }
}

 方案二:新建mapping然后将老的数据导入到新的mapping

参考elasticsearch 实现查询忽略大小写_elasticsearch 忽略大小写_一个想努力学技术的程序员的博客-CSDN博客

方案三、在现有mapping基础上配置normalizer并新增字段,

1、关闭索引,不然会报“Can't update non dynamic settings ”

POST test_index/_close

2、settings中设置normalizer 

PUT test_index/_settings 
{
            "index": {
            "analysis": {
            "normalizer":{
                "lowercase_normalizer":{
                    "type":"custom",
                    "char_filter":[

                    ],
                    "filter":[
                        "lowercase"
                    ]
                }
            }
        }
            }
        } 

3、打开索引

 POST test_index/_open

4、新增字段

PUT test_index/person/_mapping
{
  "properties": {
    "testFieldLower": {
      "type": "keyword",
      "normalizer": "lowercase_normalizer"
    }
  }
}

参考

elasticsearch 实现查询忽略大小写_elasticsearch 忽略大小写_一个想努力学技术的程序员的博客-CSDN博客 文章来源地址https://www.toymoban.com/news/detail-805507.html

到了这里,关于es-已有mapping,实现查询不区分大小写的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySQL | MySQL不区分大小写配置

    MySQL 表内数据条件查询不区分大小写是因为排序规则的问题. 在MySQL中,InnoDB存储引擎默认的字符集是utf8,utf8mb4等,这些字符集再存储数据时没有指定排序规则的话,会默认使用 utf8_general_ci或utf8mb4_general_ci 作为表的排序规则,那么该表内的数据讲不区分大小写,这两种排序规则都是

    2024年02月04日
    浏览(55)
  • mysql设置不区分表名大小写

    MySql默认是区分表名大小的,为了不区分表名大小写,我们需要完成以下配置 十分简单 1.使用root用户,修改/etc/my.cnf文件 在[mysqld]下添加 lower_case_table_names=1 2.重启mysql service mysqld restart 这样就可以执行查询看结果啦

    2024年02月15日
    浏览(50)
  • spark读取hive表字段,区分大小写问题

    背景 spark任务读取hive表,查询字段为小写,但Hive表字段为大写,无法读取数据 问题错误: 如何解决呢? In version 2.3 and earlier, when reading from a Parquet data source table, Spark always returns null for any column whose column names in Hive metastore schema and Parquet schema are in different letter cases, no matter wh

    2024年01月23日
    浏览(52)
  • FastJson转Java对像字段不区分大小写

    昨天遇到参数key大小写不一致导致校验签名失败的问题,查了很长时间才找到原因。看了一下FastJson源码,发现JSON.toObject中转换成对象的时候会忽略大小写。 所以,当使用了JSON.toObject将json转成Java对象后,再用JSON.toObject转成json,key值就变了。 写个方法验证一下: 输出:

    2024年02月07日
    浏览(41)
  • 面试官:MySQL表名和字段区分大小写嘛

    唠嗑部分 面试题:MySQL表名和字段区分大小写嘛? 这个问题我们应该这样回答,MySQL列名是不区分大小写的,表名在Windows环境下默认不区分大小写,在Linux环境默认区分大小写,提到默认两个字,那么就说明是可配置的 很多面试题网上都会有标准答案,那么小白为什么会单独

    2024年02月07日
    浏览(41)
  • 【问题处理】—— lombok 的 @Data 大小写区分不敏感

    今天在项目本地编译的时候,发现有个很奇怪的问题,一直提示某位置找不到符号, 但是实际在Idea中显示确实正常的,一开始以为又是IDEA的故障,所以重启了IDEA,并执行了mvn clean然后重新编译。但是问题并没有得到解决 这段代码最近没人改动过,所以很疑惑,所以点进了

    2024年02月03日
    浏览(63)
  • 【现场问题】flink-cdc,Oracle2Mysql的坑,Oracle区分大小写导致

    Column ‘id’ is NOT NULL, however, a null value is being written into it. You can set job configuration ‘table.exec.sink.not-null-enforcer’=‘DROP’ to suppress this exception and drop such records silently 大致意思就是不能插入为空的数值。 为什么会报这个错误,我们来看DML的执行语句: insert into t_wx_target select

    2024年02月12日
    浏览(48)
  • 【ElasticSearch查询忽略大小写】

    ElasticSearch查询忽略大小写 1、常用文档类型(数据查询字段) 2、问题解决思路 2.1 查看当前索引下是否进行分词 在Kinaba中执行上述语句,结果如下: token 就是对应的分词后的结果(此处是我已经设置完了的,所以虽然存储之前是大写TEST,但是经过处理后存储的索引结果是小

    2024年02月03日
    浏览(69)
  • DataGrip测试连接时报错: MySQL (无版本)区分大小写: 普通形式=mixed, 分隔形式=exactConnection refused: connect.

    问题: DataGrip测试连接时报错: MySQL (无版本)区分大小写: 普通形式=mixed, 分隔形式=exactConnection refused: connect. 解决: 查看一下mysql是都还开着 步骤:Win + R 打开运行窗口,输入 services.msc 后敲击回车键或点击确认。寻找 MySQL 服务,点击 启动此服务即可开启该服务。

    2024年02月08日
    浏览(65)
  • elasticsearch wildcard查询取消大小写

    https://stackoverflow.com/questions/51107349/elasticsearch-wildcard-case-sensitive 添加case_insensitive 参数即可

    2024年02月12日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包