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后缀的,也就是我们使用的默认的字段查询时大小写敏感。因我们每日生成的索引名不同,但有固定格式,所我们通过模板修改索引字段类型即可,操作如下:

设置

  • 创建一个索引模板,关联索引


    image-20211101100232121
  • 索引设置保持默认即可

  • 自定义映射字段(这里的映射其实就是索引的_mapping

    解释: 我这里是将traceId字段的类型修改为 keyword类型,其他字段则还为默认配置


    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"
}
}
}
}

完工!

参考链接一

参考链接二

ES查询区分大小写的更多相关文章

  1. MySQl查询区分大小写的解决办法

    通过查询资料发现需要设置collate(校对) . collate规则: *_bin: 表示的是binary case sensitive collation,也就是说是区分大小写的 *_cs: ca ...

  2. mysql查询区分大小写与自定义排序

    mysql查询区分大小写: SELECT id,developer FROM products WHERE developer != '' and developer = binary('LYNN') ...

  3. ElasticSearch 学习记录之ES查询添加排序字段和使用missing或existing字段查询

    ES添加排序 在默认的情况下,ES 是根据文档的得分score来进行文档额排序的.但是自己可以根据自己的针对一些字段进行排序.就像下面的查询脚本一样.下面的这个查询是根据productid这个值进行排 ...

  4. ES查询之刨根问底

    昨天有一个需求,就是想要根据某个网关url做过滤,获取其下面所有的上下文nginx日志:如果直接"query":"https://XXX/YYY/ZZZ"发现有 ...

  5. 使MySQL查询区分大小写的实现方法

    发布:mdxy-dxy 字体:[增加 减小] 类型:转载 我们在MySQL中使用SELECT语句查询时,可不可以使查询区分大小写?今天从网络上找到了方法,现总结如下.   1.一种方法是可以设置表或行 ...

  6. .NetCore下ES查询驱动 PlainElastic .Net 升级官方驱动 Elasticsearch .Net

    1.背景 由于历史原因,笔者所在的公司原有的ES查询驱动采用的是 PlainElastic.Net, 经过询问原来是之前PlainElastic.Net在园子里文档较多,上手比较容易,所以最初作者选用 ...

  7. Es查询工具使用

    Kibana按照索引过滤数据 1.创建索引模式 2.查询索引中的数据 Es查询不返回数据 创建索引的时候指定mapping mappings={ "mappings": { &qu ...

  8. ES查询语句

    记录常用的es 查询 聚合 GET _cat / indices GET / p_ext_develop / _mapping / g GET / p_ext_develop / _analyze { ...

  9. Es查询结果集默认是10000,更新设置

    Es查询结果集默认是10000,结果集大小是int,最大为21亿左右 PUT _all/_settings?preserve_existing=true { "index.max_resul ...

随机推荐

  1. Markdown快捷键详解(源自狂神说Java视频,整理版)

    #加空格 表示是一个标题(一级标题)回车后直接生成 例下 Markdown学习 标题: ##(两个#号)空格加标题名字即为二级标题例下 二级标题 三个#号 加标题名字即为三级标题,与二级标题等有层级关 ...

  2. webService动态调用及返回至处理

    http://www.cnblogs.com/xffy1028/archive/2012/05/07/2487595.html using System; using System.Collectio ...

  3. POJ3061——Subsequence(尺取法)

    Subsequence POJ - 3061 给定长度为n的数列整数a0,a1,a2-an-1以及整数S.求出总和不小于S的连续子序列的长度的最小值,如果解不存在输出0. 反复推进区间的开头和末尾,来 ...

  4. RE Validation in JavaEE

    以下是关于RE校验的一些方法的基本功能: import java.util.regex.Pattern;<br> /** * 校验器:利用正则表达式校验邮箱.手机号等 * */<br ...

  5. javascript 高阶函数 实现 AOP 面向切面编程 Aspect Oriented Programming

    AOP的主要作用是吧一些跟核心业务逻辑模块无关的功能 -日志统计, 安全控制, 异常处理- 抽离出来, 再通过"动态织入"的方式掺入业务逻辑模块中. 这里通过扩展Function. ...

  6. 计算机python二级 第六套

    第一模块  基本操作 1. random.seed(100)   随机种子  就是100 2.import  random 3.https://www.runoob.com/python3/pytho ...

  7. [源码解析] PyTorch 流水线并行实现 (3)--切分数据和运行时系统

    [源码解析] PyTorch 流水线并行实现 (3)--切分数据和运行时系统 目录 [源码解析] PyTorch 流水线并行实现 (3)--切分数据和运行时系统 0x00 摘要 0x01 分割小批次 ...

  8. c++ 的学习 第二集函数的重载2 namemangling

    1. 本质 采用了name mangling或者叫name decoration ✓ C++编译器默认会对符号名(比如函数名)进行改编.修饰,有些地方翻译为"命名倾轧"✓ 重载时 ...

  9. Springboot --- Bug集

    一. 启动springboot报错:找不到或无法加载主类 解决:直接选中项目,在ecplise选中"project",点击clean 清理项目再运行 问题解决. 二.报错:Fail ...

  10. Maven----将手动下载的jar包以命令行的方式安装到本地MavenRepository中

    1.情景再现:准备实现SprintBoot的热部署功能,因没有对应jar时,在Eclipse中mvn install 会报错: 报错信息: [INFO] --- spring-boot-maven-p ...