ES查询区分大小写

ES查询在默认的情况下是不区分大小写的,在5.0版本之后将 string类型拆分成两种新的数据类型, text用于全文搜索(模糊搜索), keyword用于关键字搜索(精确搜索)。

注意: 5.0之后 ES字符串将默认同时映射成 text, keyword类型,将会自动创建字面的动态映射,这是在你没有修改任何设置的情况下的默认配置,如下:

{
  "appname-2021.10.28" : {
    "mappings" : {
      "properties" : {
        "@timestamp" : {
          "type" : "date"
        },
        "@version" : {
          "type" : "text",
          "fields" : {
            "keyword" : {
              "type" : "keyword",
              "ignore_above" : 256
            }
          }
        },
        "totalEnabledSize" : {
          "type" : "text",
          "fields" : {
            "keyword" : {
              "type" : "keyword",
              "ignore_above" : 256
            }
          }
        },
        "traceId" : {
          "type" : "text",
          "fields" : {
            "keyword" : {
              "type" : "keyword",
              "ignore_above" : 256
            }
          }
        }
      }
    }
  }
}

image-20211101095128241

在这种默认的情况下,我们通过字段查询的时候都会有两个字段一个是带 keyword后缀的,一个是不带的。带`keyword后缀的则是自动生成的。

image-20211101095347702

keyword后缀的则大小写敏感,不带的则不敏感,但经正常使用发现,它居然跟默认的不太一样,居然不带高亮,一不做二不休咱们直接修改配置,让不带 keyword后缀的,也就是我们使用的默认的字段查询时大小写敏感。因我们每日生成的索引名不同,但有固定格式,所我们通过模板修改索引字段类型即可,操作如下:

  • 创建一个索引模板,关联索引
    ES查询区分大小写image-20211101100232121
  • 索引设置保持默认即可
  • 自定义映射字段(这里的映射其实就是索引的 _mapping解释: 我这里是将 traceId字段的类型修改为 keyword类型,其他字段则还为默认配置ES查询区分大小写image-20211101100433386
{
  "properties": {
    "traceId": {
      "type": "keyword"
    }
  }
}
  • 别名则默认,无需设置
  • 保存模板

注意: 当你保存模板了,那么保存模板后关联到的索引才会生效新配置,在你保存模板之前的索引则不生效。比如你10.29好创建的模板,那么10.30创建的索引才会引用新配置。

分享一下我修改后的配置,如下:

{
  "appname-2021.10.30" : {
    "mappings" : {
      "properties" : {
        "@timestamp" : {
          "type" : "date"
        },
        "@version" : {
          "type" : "text",
          "fields" : {
            "keyword" : {
              "type" : "keyword",
              "ignore_above" : 256
            }
          }
        },
        "totalEnabledSize" : {
          "type" : "text",
          "fields" : {
            "keyword" : {
              "type" : "keyword",
              "ignore_above" : 256
            }
          }
        },
        "traceId" : {
          "type" : "keyword"
        }
      }
    }
  }
}

当然也可使用api来更新你的索引模板,因api使用不熟悉,所我使用可视化来操作,在此我提供一下我的PUT请求,供大家参考

PUT _template/chenfan-log
{
  "order": 0,
  "index_patterns": [
    "appname*"
  ],
  "settings": {
    "index": {
      "lifecycle": {
        "name": "chenfan-log"
      }
    }
  },
  "mappings": {
    "properties": {
      "traceId": {
        "type": "keyword"
      }
    }
  }
}

完工!

Original: https://www.cnblogs.com/98record/p/es-cha-xun-qu-fen-da-xiao-xie.html
Author: 自在拉基
Title: ES查询区分大小写

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/586076/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • dbus的奇妙世界

    故事背景 在linux开发中我们经常会用到dbus来进行进程间通信,但是如何理解dbus服务端和客户端呢?很多小伙伴可能都会遇到类似的问题,而且都是含含糊糊的,接下来我们直接上硬菜…

    Linux 2023年5月27日
    083
  • Unable to install NuGet provider for PowerShell

    https://docs.microsoft.com/en-us/officeonlineserver/enable-tls-1-1-and-tls-1-2-support-in-…

    Linux 2023年5月28日
    071
  • Docker安装 Ubuntu Centos

    Ubuntu 安装Dokcer 1. 删除旧版本Docker安装包和依赖项 sudo apt-get remove docker docker-engine docker.io c…

    Linux 2023年6月13日
    081
  • ELK收集日志之logstash使用

    一、logstash使用 1.logstah收集文件日志 不难理解,我们的日志通常都是在日志文件中存储的,所以,当我们在使用INPUT插件时,收集日志,需要使用file模块,从文件…

    Linux 2023年5月27日
    093
  • Pytorch 中 tensor的维度拼接

    torch.stack() 和 torch.cat() 都可以按照指定的维度进行拼接,但是两者也有区别,torch.satck() 是 增加新的维度进行堆叠,即其维度拼接后会增加一…

    Linux 2023年6月7日
    0100
  • 更改网卡名称

    CentOS7使用了”一致性网络命名方法” 更改配置文件内容 关闭”一致性网络设备命名法” 更新GRUB、内核配置 grub2-mk…

    Linux 2023年6月6日
    087
  • Kubernetes后台数据库etcd:安装部署etcd集群,数据备份与恢复

    服务器版本 docker软件版本 CPU架构 CentOS Linux release 7.4.1708 (Core) Docker version 20.10.12 x86_64…

    Linux 2023年6月7日
    088
  • 计算机网络通信

    早期:联机 以太网:局域网与交换机 广播 主机之间”一对所有”的通讯模式,网络对其中每一台主机发出的信号都进行无条件复制并转发,所有主机都可以接收到所有信息…

    Linux 2023年6月14日
    092
  • Redis基础

    1.简介 Redis (远程字典服务器)是一 个开源的、使用C语言编写的NoSQL数据库。Redis基于内存运行并支持持久化,采用 key-value (键值对)的存储形式,是目前…

    Linux 2023年6月13日
    079
  • SpringBoot 多环境配置文件切换

    背景 很多时候,我们项目在开发环境和生成环境的环境配置是不一样的,例如,数据库配置,在开发的时候,我们一般用测试数据库,而在生产环境的时候,我们是用正式的数据,这时候,我们可以利用…

    Linux 2023年6月14日
    0140
  • ShardingSphere-proxy-5.0.0企业级分库分表、读写分离、负载均衡、雪花算法、取模算法整合(八)

    一、简要说明 以下配置实现了: 1、分库分表 2、每一个分库的读写分离 3、读库负载均衡算法 4、雪花算法,生成唯一id 5、字段取模 6、解决笛卡尔积问题 7、设置默认所有表不进…

    Linux 2023年6月14日
    082
  • “XZ”格式文件解压

    1、下载xz 官网:https://tukaani.org/xz/ 例:wget https://nchc.dl.sourceforge.net/project/lzmautils…

    Linux 2023年6月6日
    0104
  • 使用 Powershell 删除N天前的文件

    在 Linux 中删除N天前的文件可以使用以下命令: find /path/to -maxdepth 1 -name "filename" -mtime +1 …

    Linux 2023年6月14日
    078
  • linux命令__ln

    ln ln是linux中又一个非常重要命令,请大家一定要熟悉。它的功能是为某一个文件在另外一个位置建立一个同步的链接,这个命令最常用的参数是-s,具体用法是:ln –s 源文件 目…

    Linux 2023年6月7日
    0101
  • 网络安全简单入门与扫描

    网络安全简单入门 内容大纲 策略制定 安全工具 其他 1、安全策略 1.1、安全三要素 要全面地认识一个安全问题,我们有很多种办法,但首先要理解安全问题的组成属性。前人通过无数实践…

    Linux 2023年6月7日
    092
  • Linux下如何切割与合并大文件

    我们传输一个大文件时,有时网络比较慢,需要花费很长时间才能传输完成,或者传输的过程中,网络不稳定,有可能导致此次传输失败,针对这种情况,我们可以把大文件切分成小文件,再逐个的传输到…

    Linux 2023年6月13日
    0116
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球