ES: 设置默认值

2023-11-20

场景: 

   XX对象的告警个数字段是数字, 优先级字段是数字

  排序要求: 优先告警个数大->小, 其次优先级大->小

问题: 

告警个数字段不存在或者值为0的情况是等价的,排序上应该是平等的.

不应该存在0的大于字段不存在的

处理: 

    对没有告警个数字段的默认设置0 , 那么排序的时候才正确

    使用Missing - 给字段设置默认值

一般用于排序时,该字段没有值,使用missing赋值默认值,然后就用赋的值进行排序

GET indexname/_search
{
  
  "sort": [
    {
      "alarmNum": {
        "order": "asc",
        "missing": 0    -- 此字段不存在的时候, 值为0 . 与值0是一样排序 
      }
    },
    {
      "priority_code":{
        "order": "asc"
      }
    }
  ],

 "from":0,
 "size":100
}

unmapped_type - 容错不存在的字段

如果mapping中无此字段,则搜索请求将失败.unmapped_type选项允许您忽略没有mapping的字段,也不按它们排序。参数的值为该字段对应值的类型。

这种场景一般不存在.因为index至少有一条数据存在此字段有值,mapper里面就有

如何不报错?

GET project_base_info/_search
{
 
  "sort": [
    {
      "alarmNum1": {
        "order": "asc",
        "missing": 0,
        "unmapped_type":"long"  -- 有了此配置 ,mapper没有也不会报错
      }
    },
    {
      "project_priority_code":{
        "order": "asc"
      }
    }
  ],

 "from":0,
 "size":100
}

pipeline 设置默认值:属于前置设置默认值

在插入数据时候,给字段设置给默认值. 但问题是,后续也无法修改此字段. 这个应该很少有这个需求

PUT _ingest/pipeline/add_zcy_pipeline
{
  "processors": [
    {
      "set": {
        "field": "projectCode",
        "value": "10000000"
      }
    }
  ]
}

设置projectCode 默认值10000000

创建索引:
PUT projecy_zcy3
{
  "settings": {
    "refresh_interval": "1s",
    "number_of_shards": 1,
    "number_of_replicas": 1,
    "index":{
      "default_pipeline":"add_zcy_pipeline"
    }
  },
  "mappings": {
    "properties": {
      "id": {
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword"
          },
          "keylong": {
            "type": "long"
          }
        }
      },
      "projectCode": {
        "type": "text"
      },
      "projectName": {
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword"
          }
        }
      },
      "projectStatus": {
        "type": "keyword"
      }
    }
  }
}

插入数据
PUT projecy_zcy3/_doc/2
{
  "id":"1022",
  "projectName":"ssss"
}
结果:
 "_source" : {
          "projectCode" : "10000000",
          "id" : "1022",
          "projectName" : "ssss"
        }
PUT projecy_zcy3/_doc/2
{
  "id":"1022",
  "projectName":"ssss",
  "projectCode":"111"
}
结果还是
 "_source" : {
          "projectCode" : "10000000",
          "id" : "1022",
          "projectName" : "ssss"
        }

设置默认值--script执行批量

# 批量更新脚本
POST customer/_update_by_query
{
  "script": {
    "lang": "painless",
    "source": "if (ctx._source.major == null) {ctx._source.major = 'student'}"
  }
}

设置默认值--借助 pipeline script 更新

PUT _ingest/pipeline/update_pipeline
{
  "processors": [
    {
      "script": {
        "lang": "painless",
        "source": """
              if (ctx['major'] == null) {ctx['major'] = 'student'}
          """
      }
    }
  ]
}
POST customer/_doc/4
{
  "major":null
}
POST customer/_update_by_query?pipeline=update_pipeline
{
  "query": {
    "match_all": {}
  }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ES: 设置默认值 的相关文章

随机推荐

  • Mac 安装 vue 环境

    安装 nodejs 首先 安装 nodejs 官网下载node https nodejs org zh cn 接下来 安装下载下来的软件包 安装完成后 在终端输入 node v 查看是否安装成功 安装 cnpm 终端输入 sudo npm
  • 【华为OD统一考试B卷

    华为OD统一考试A卷 B卷 新题库说明 2023年5月份 华为官方已经将的 2022 0223Q 1 2 3 4 统一修改为OD统一考试 A卷 和OD统一考试 B卷 你收到的链接上面会标注A卷还是B卷 请注意 根据反馈 目前大部分收到的都是
  • Linux下面安装MySQL详细步骤讲解

    今天下午在Linux下装了MySQL 我的是虚拟机里面装的CentOs7版本 装mysql的过程中遇到了一些问题 网上的回答又是乱七八糟 为了使朋友们少走弯路 特把我今天安装的全部流程总结如下 1 首先我是先从官网下下载一个 mysql 5
  • 在centos在部署分布式文件存储系统Minio

    docker部署以及详细文档自取 链接 https pan baidu com s 14NhCk1SQZEHqzMubpUD0eQ 提取码 xyxy 0 应用场景 电商网站 海量商品图片 视频网站 海量视频文件 网盘 海量文件 社交网站 海
  • LeetCode题解—260.只出现一次的数字Ⅲ

    题目地址 260 只出现一次的数字 III 力扣 LeetCode 题解 这道题是基于寻找只出现一次的数字 上的拓展 136 只出现一次的数字 力扣 LeetCode 在 中 我们只需要把所有的数字异或一遍即可 因为只有一个数字是唯一的 但
  • 2.23怎么在OrCAD原理图中显示与隐藏元器件的Value值?【OrCAD原理图封装库50问解析】

    笔者电子信息专业硕士毕业 获得过多次电子设计大赛 大学生智能车 数学建模国奖 现就职于南京某半导体芯片公司 从事硬件研发 电路设计研究 对于学电子的小伙伴 深知入门的不易 特开次博客交流分享经验 共同互勉 全套资料领取扫描文末二维码 温馨提
  • C1认证学习笔记(第三章)

    C1认证 三 JS基础 JavaScript变量命名规则 任务目标 任务背景 语法层面 工程层面 任务练习 逻辑运算 任务目标 任务背景 比较运算符 逻辑运算符 知识拓展 任务练习 隐式类型转换 任务目标 任务背景 任务内容 字符串和数字的
  • 设计模式之访问者模式

    访问者模式 把被操作的对象作为元素 可变可拓展的操作作为访问者 可以说访问者中有很多操作 然后访问者访问元素 对该元素进行操作 不同的访问者有不同的操作 案例 定义访问者接口 public interface UniversalVisito
  • 如何创建虚拟环境

    创建虚拟环境常用的两种方法 一 用conda创建虚拟环境的步骤 1 创建虚拟环境 conda create n env python 3 6 版本号 2 激活虚拟环境 source activate env 3 退出虚拟环境 source
  • Unity动画控制器animator.CrossFade

    需要特别注意 1 CrossFade虽然可以不用任何逻辑来链接而直接跳转 但是CrossFade只能覆盖其他动画 当当前动画播放完毕而没有跳出这个动画时再次调用CrossFade将会失败 造成动画依旧停在原位 参数animator Cros
  • [学C日记]---数组

    1 数组创建 int count int arr count 不行 中不能使用变量 2 数组的大小可以通过计算得到 int arr 10 int sz sizeof arr sizeof arr 0 在主函数里算 在调用函数里算时 传参的时
  • CTFSHOW-WEB详解

    CTFSHOW WEB详解 一 WEB13 文件上传 二 WEB 红包题第二弹 一 WEB13 文件上传 开始的界面就是文件上传 确定方向为文件上传漏洞分析 尝试上传文件 我上传的第一个文件是一个文本文件很小只有9个字节 就上传成功了直接
  • 数据分析---arXiv论文种类分类

    论文种类分类 4 1 任务说明 主题 论文分类 数据建模任务 利用已有数据建模 对新论文进行类别分类 内容 使用论文标题完成类别分类 4 2 数据处理步骤 在原始arxiv论文中论文都有对应的类别 而论文类别是作者填写的 在本次任务中可以借
  • 修改环境变量后,导致一些常用命令失效,如ll,ls,vi不能用

    因为一不小心将linux的环境变量修改错误 导致ll之类的常用命令都不能用 很是苦恼 通过百度查询 原来在敲命令时 敲完整的命令路径 还是可以的 原文地址 http www cnblogs com zhbsh archive 2011 05
  • 1141 二维数组的输入和输出

    题目描述 输入m行n列的二维数组的值 再按行列形式输出 输入要求 第一行输入m n代表行数和列数 接着输入具体的m n个元素 输出要求 按行列形式换行输出 每一个数据后面都有空格 一行输出完毕后换行 输入样例 2 5 1 4 6 23 1
  • Qt实现窗口关闭时提示确认退出

    Qt实现窗口关闭时提示确认退出 在Qt中 当用户点击窗口关闭按钮时 程序会直接退出 这样可能会导致数据丢失或其他不必要的操作 为了提高用户体验 我们可以在窗口关闭前给出一个提示框 询问用户是否确认退出 一 实现思路 通过重写QWidget类
  • kaggle数据集的下载

    感谢阅读本文 喜欢请收藏点赞 准备工作 1 安装kaggle库 2 注册登录kaggle账户 3 kaggle json的下载与使用 4 下载数据集 文件保存路径 准备工作 1 安装kaggle库 2 注册登录kaggle账户 点我跳转 没
  • R-INLA Project目录

    集成嵌套拉普拉斯近似法 INLA 是一种近似贝叶斯推断的方法 在过去的几年里 由于其速度和通过R INLA软件包的易用性 它已经成为马尔科夫链蒙特卡洛等其他方法的替代品 尽管INLA方法的重点是可以表达为潜伏高斯马尔可夫随机场 GMRF 的
  • SpringMVC视图解析器

    SpringMVC视图解析器 前言 在前一篇博客中讲了SpringMVC的Controller控制器 在这篇博客中将接着介绍一下SpringMVC视图解析器 当我们对SpringMVC控制的资源发起请求时 这些请求都会被SpringMVC的
  • ES: 设置默认值

    场景 XX对象的告警个数字段是数字 优先级字段是数字 排序要求 优先告警个数大 gt 小 其次优先级大 gt 小 问题 告警个数字段不存在或者值为0的情况是等价的 排序上应该是平等的 不应该存在0的大于字段不存在的 处理 对没有告警个数字段