zoukankan      html  css  js  c++  java
  • ES查询区分大小写

    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
    image-20211101095128241

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

    image-20211101095347702
    image-20211101095347702

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

    设置

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

      image-20211101100232121
      image-20211101100232121

    • 索引设置保持默认即可

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

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

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

    完工!

    参考链接一

    参考链接二

  • 相关阅读:
    装黑苹果遇到的术语
    关于Android方法数量限制的问题
    使用LeakCanary遇到的问题 就是不弹出来
    Android内存泄露自动检测神器LeakCanary
    Android开发常见的Activity中内存泄漏及解决办法
    LeakCanary 中文使用说明
    LeakCanary: 让内存泄露无所遁形
    LeakCanary——直白的展现Android中的内存泄露
    【腾讯Bugly干货分享】Android内存优化总结&实践
    Java基础--定时任务Timer
  • 原文地址:https://www.cnblogs.com/98record/p/es-cha-xun-qu-fen-da-xiao-xie.html
Copyright © 2011-2022 走看看