elasticsearch 7.17 索引模板

news2025/4/7 16:19:57

文章目录

    • 概要

概要

模板

import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.introns.framework.es.builder.OperationsBuilder;
import java.util.HashMap;
import java.util.Map;

abstract class AbstractBuilder<T extends AbstractBuilder<T>> {
  protected final Map<String, Object> map;
  protected final OperationsBuilder builder;

  protected AbstractBuilder(OperationsBuilder builder) {
    this.map = new HashMap<>();
    this.builder = builder;
  }

  protected abstract T self();

  public OperationsBuilder unwrap() {
    return builder;
  }

  public T set(String key, Object value) {
    if (StrUtil.isNotBlank(key) && ObjectUtil.isNotEmpty(value)) {
      map.put(map, value);
    }

    return this.self();
  }

  public Map<String, Object> build() {
    return map;
  }
}
import cn.introns.framework.es.builder.OperationsBuilder;
import lombok.extern.slf4j.Slf4j;

/**
 * SettingsBuilder<br>
 * <a
 * href='https://www.elastic.co/guide/en/elasticsearch/reference/7.17/index-modules.html#index-modules-settings'>elasticsearch
 * 7.17 document</a>
 * @since 3.0.2
 */
@Slf4j
public class SettingsBuilder extends AbstractBuilder<SettingsBuilder> {
  @Override
  protected SettingsBuilder self() {
    return this;
  }

  public SettingsBuilder(OperationsBuilder builder) {
    super(builder);
  }

  // static index settings

  /**
   * 设置分片数量<br>
   *
   * <ul>
   *   <li>索引应具有的主分片数。默认为1。此设置只能在索引创建时设置。它不能在已关闭的索引上更改
   *   <li>每个索引的分片数量限制为1024个。此限制是一个安全限制,用于防止意外创建索引,这些索引可能会因资源分配而破坏集群的稳定。可以通过在属于集群的每个节点上指定export
   *       ES_JAVA_OPTS=“-Des.index.max_number_of_shard=128”系统属性来修改限制
   * </ul>
   *
   * @param value 分片数量
   * @return {@link SettingsBuilder}
   */
  public SettingsBuilder setNumberOfShards(int value) {
    if (value < 0 || value > 1024) {
      log.warn("number_of_shards value range [1, 1024], current value {}, do not set", value);
      return this;
    }

    return this.set("number_of_shards", value);
  }

  /**
   * 此设置的默认值取决于索引中主分片的数量。默认设置允许您按2的倍数分割,最多可分割1024个分片<br>
   *
   * @param value 分片数量
   * @return {@link SettingsBuilder}
   */
  public SettingsBuilder setNumberOfRoutingShards(int value) {
    if (value < 2 || value > 1024) {
      log.warn(
          "number_of_routing_shards value range [2, 1024], current value {}, do not set", value);
      return this;
    }

    return this.set("number_of_routing_shards", value);
  }

  /**
   * 用于定义索引数据在磁盘上的压缩算法,默认值 LZ4
   *
   * @param value 压缩算法
   * @return {@link SettingsBuilder}
   */
  public SettingsBuilder setCodec(String value) {
    return this.set("codec", value);
  }

  /**
   * 平衡数据分布优化查询性能<br>
   * 取值范围<code>1 <= routing_partition_size < number_of_shards</code>
   *
   * <ul>
   *   <li>默认情况下,使用自定义路由的文档会根据路由值的哈希结果分配到唯一主分片,可能导致数据倾斜
   *   <li>通过设置该值,相同路由值的文档会被分散到多个分片中,缓解数据集中问题
   * </ul>
   *
   * @param value 值
   * @return {@link SettingsBuilder}
   */
  public SettingsBuilder setRoutingPartitionSize(int value) {
    if (value < 0 || value >= 1024) {
      log.warn(
          "routing_partition_size value range [1, number_of_shards), current value {}, do not set",
          value);
      return this;
    }
    return this.set("routing_partition_size", value);
  }

  /**
   * 控制索引软删除功能<br>
   * 适用版本<code>6.5.0 ~ 7.6.0</code>
   *
   * @param value 值
   * @return {@link SettingsBuilder}
   */
  @Deprecated
  public SettingsBuilder setSoftDeletesEnabled(boolean value) {
    return this.set("soft_deletes.enabled", value);
  }

  /**
   * 控制软删除记录保留时间,默认值 12h<br>
   * 单位支持 h(时) | m(分) | s(秒)<br>
   * 适用版本<code>7.6.0 ~</code>
   *
   * @param value 值
   * @return {@link SettingsBuilder}
   */
  public SettingsBuilder setSoftDeletesRetentionLeasePeriod(String value) {
    return this.set("soft_deletes.retention_lease.period", value);
  }

  /**
   * 控制嵌套查询性能优化行为,默认值 true<br>
   *
   * @param value 值
   * @return {@link SettingsBuilder}
   */
  public SettingsBuilder setLoadFixedBitsetFiltersEagerly(boolean value) {
    return this.set("load_fixed_bitset_filters_eagerly", value);
  }

  /**
   * 用于在分片启动时执行严格的数据完整性检查,专家级参数<br>
   * 可选的值有 false checksum true ,默认值 false
   *
   * @param value 值
   * @return {@link SettingsBuilder}
   */
  public SettingsBuilder setShardCheckOnStartup(String value) {
    return this.set("shard.check_on_startup", value);
  }

  // dynamic index settings

  /**
   * 用于控制每个主分片的副本数量,默认值 1<br>
   * 可以调用api动态修改无需重启<br>
   *
   * <ul>
   *   <li>推荐至少 1,确保每个主分片至少有一个副本
   *   <li>副本数应该小于等于集群节点数 - 1,例如3割接点集群最多支持每个主分片2个副本
   * </ul>
   *
   * @param value 副本数量
   * @return {@link SettingsBuilder}
   */
  public SettingsBuilder setNumberOfReplicas(int value) {
    return this.set("number_of_replicas", value);
  }

  /**
   * 用于动态调整索引副本数的配置<br>
   *
   * <ul>
   *   <li>范围模式,值 0-5 即副本数在0到5之间自动调整;0-all 即副本数最小0,最大不超过当前节点数 - 1
   *   <li>默认值 false
   * </ul>
   *
   * @param value 值
   * @return {@link SettingsBuilder}
   */
  public SettingsBuilder setAutoExpandReplicas(String value) {
    return this.set("auto_expand_replicas", value);
  }

  /**
   * 用于控制分片空闲状态的参数,默认值 30s
   *
   * @param value 值
   * @return {@link SettingsBuilder}
   */
  public SettingsBuilder setSearchIdleAfter(String value) {
    return this.set("search.idle.after", value);
  }

  /**
   * 控制索引刷新频率的核心参数,直接影响数据的实时可见性和写入性能,默认值 1s
   *
   * @param value 值
   * @return {@link SettingsBuilder}
   */
  public SettingsBuilder setRefreshInterval(String value) {
    return this.set("refresh_interval", value);
  }

  /**
   * 限制分页查询深度,默认值 10000 即当分页查询的起始偏移量(from)与每页大小(size)之和超过该值时,请求会被拒绝<br>
   *
   * <ul>
   *   <li>基于经验值,平衡用户体验与系统安全。大多数场景下,用户不会浏览超过前 1000 页(假设每页 10 条)
   * </ul>
   *
   * @param value 值
   * @return {@link SettingsBuilder}
   */
  public SettingsBuilder setMaxResultWindow(int value) {
    return this.set("max_result_window", value);
  }

  /**
   * 用于限制内部命中(inner hits)和聚合(top_hits)结果页深度,默认值 100<br>
   * 增大该值会增加内存再用(尤其是聚合或嵌套文档较多时)
   *
   * @param value 值
   * @return {@link SettingsBuilder}
   */
  public SettingsBuilder setMaxInnerResultWindow(int value) {
    return this.set("max_inner_result_window", value);
  }

  /**
   * 用于限制重评分操作窗口大小,默认值 10000
   *
   * @param value 值
   * @return {@link SettingsBuilder}
   */
  public SettingsBuilder setMaxReScoreWindow(int value) {
    return this.set("max_rescore_window", value);
  }

  /**
   * 用于限制单个查询中可请求的<code>doc_value_fields</code>数量,以避免因过度资源消耗导致集群性能下降,默认值 100
   *
   * @param value 值
   * @return {@link SettingsBuilder}
   */
  public SettingsBuilder setMaxDocValueFieldsSearch(int value) {
    return this.set("max_docvalue_fields_search", value);
  }

  /**
   * 用于限制单个查询中通过脚本动态生成字段(script_fields)的数量,以防止因过度计算导致集群性能下降,默认值 32
   *
   * @param value 值
   * @return {@link SettingsBuilder}
   */
  public SettingsBuilder setMaxScriptFields(int value) {
    return this.set("max_script_fields", value);
  }

  /**
   * 用于控制NGram分词器(NGram Tokenizer)和NGram过滤器(NGram TokenFilter)的最小和最大长度差值的索引级配置<br>
   * 限制在 NGram 分词器或过滤器中,min_gram(最小 n-gram 长度)和 max_gram(最大 n-gram 长度)之间的差值上限<br>
   * 默认值 1(即 <code>max_gram - min_gram <= 1</code>)
   *
   * @param value 值
   * @return {@link SettingsBuilder}
   */
  public SettingsBuilder setMaxNgramDiff(int value) {
    return this.set("max_ngram_diff", value);
  }

  /**
   * 用于控制<code>Shingle Token Filter</code>(词片过滤器)中允许的<code>max_shingle_size</code>和<code>
   * min_shingle_size</code>最大差值的索引级配置<br>
   *
   * <uL>
   *   <li>默认值 3,即<code>max_shingle_size - min_shingle_size <= 3</code>
   * </uL>
   *
   * @param value 值
   * @return {@link SettingsBuilder}
   */
  public SettingsBuilder setMaxShingleDiff(int value) {
    return this.set("max_shingle_diff", value);
  }

  /**
   * 用于控制分片级刷新监听器数量上限的索引级配置,默认值 1000,即elasticsearch 默认将每个分片最多 1000 个监听器<br>
   * 限制每个分片上可同时存在的刷新监听器的最大数量
   *
   * @param value 值
   * @return {@link SettingsBuilder}
   */
  public SettingsBuilder setMaxRefreshListeners(int value) {
    return this.set("max_refresh_listeners", value);
  }

  /**
   * 用于控制<code>_analyze</code> API 分词结果最大数量,默认值 10000,即 10000 个词元<br>
   * 限制通过<code>_analyze</code> API 分析文本时,单个请求可生成的词元(Token)的最大数量
   *
   * @param value 值
   * @return {@link SettingsBuilder}
   */
  public SettingsBuilder setAnalyzeMaxTokenCount(int value) {
    return this.set("analyze.max_token_count", value);
  }

  /**
   * 用于控制高亮功能处理文本长度上线的索引级设置,默认值 1000000 即 1000000 个字符<br>
   * 限制在高亮请求中,对单个字段内容进行分析的最大字符数量,超过此限制的文本本分将不会被分析和高亮
   *
   * @param value 值
   * @return {@link SettingsBuilder}
   */
  public SettingsBuilder setHighlightMaxAnalyzedOffset(int value) {
    return this.set("highlight.max_analyzed_offset", value);
  }

  /**
   * 用于控制<code>Terms Query</code>(多词项精确匹配查询)中允许使用的最大词项数量的索引级配置,默认值 65536 即64k个词项<br>
   * 限制<code>Terms Query</code>中一次查询可指定的词项(Terms)的最大数量<br>
   * 适用于处理需要匹配大量精确值的查询(如Id过滤、标签匹配等)
   *
   * @param value 值
   * @return {@link SettingsBuilder}
   */
  public SettingsBuilder setMaxTermsCount(int value) {
    return this.set("max_terms_count", value);
  }

  /**
   * 用于限制正则表达式查询<code>Regexp Query</code>中正则表单时长度的索引级设置,默认值 1000,超过此长度的正则表达式会触发错误<br>
   * 限制在<code>Regexp Query</code>中使用正则表单时的最大字符长度,防止因复杂或过长的正则表单时导致性能问题或资源耗尽<br>
   * 适用于需要自定义正则表达式复杂度的业务场景,如日志分析,文本模式匹配
   *
   * @param value 值
   * @return {@link SettingsBuilder}
   */
  public SettingsBuilder setMaxRegexLength(int value) {
    if (value < 0 || value > 32733) {
      log.warn("max_regex_length value range [1, 32733], current value {}, do not set", value);
      return this;
    }
    return this.set("max_regex_length", value);
  }

  /**
   * 用于控制默认搜索字段范围,默认值 *<br>
   *
   * <ul>
   *   <li>通配符模式
   *   <li>具体字段名
   *   <li>字段名数组,多个字段中也可以是具体字段名和统配符模式字段
   * </ul>
   *
   * @param value 值
   * @return {@link SettingsBuilder}
   */
  public SettingsBuilder setQueryDefaultField(Object value) {
    return this.set("query.default_field", value);
  }

  /**
   * 用于控制索引分片分配策略,默认值 all,即允许所有分片被分配到节点(主分片和副分片)<br>
   * 可选值 all primaries replicas none
   *
   * @param value 值
   * @return {@link SettingsBuilder}
   */
  public SettingsBuilder setRoutingAllocationEnable(String value) {
    return this.set("routing.allocation.enable", value);
  }

  /**
   * 用于控制索引分片重新平衡策略,默认值 all,即允许所有分片参与重新平衡(主分片和副分片)<br>
   * 可选值 all primaries replicas none
   *
   * @param value 值
   * @return {@link SettingsBuilder}
   */
  public SettingsBuilder setRoutingReBalanceEnable(String value) {
    return this.set("routing.rebalance.enable", value);
  }

  /**
   * 用于控制已删除文档版本号保留时间的索引设置,默认值 60s<br>
   * 单位支持 h(时) | m(分) | s(秒)<br>
   *
   * @param value 值
   * @return {@link SettingsBuilder}
   */
  public SettingsBuilder setGcDeletes(String value) {
    return this.set("gc_deletes", value);
  }

  /**
   * 用于定义索引文档时默认使用的处理管道设置,默认空<br>
   * 可选值 已经存在的管道名称 _none null(空)
   *
   * @param value 值
   * @return {@link SettingsBuilder}
   */
  public SettingsBuilder setDefaultPipeline(String value) {
    return this.set("default_pipeline", value);
  }

  /**
   * 用于定义索引文档时必须经过的最终处理管道,默认空,不强制使用任何最终管道
   *
   * <ul>
   *   <li>特殊值 _none 标识禁用所有管道
   * </ul>
   *
   * @param value 值
   * @return {@link SettingsBuilder}
   */
  public SettingsBuilder setFinalPipeline(String value) {
    return this.set("final_pipeline", value);
  }

  /**
   * 用于控制索引是否默认隐藏,隐藏索引在通配符匹配<code>(GET *)</code>是不会自动返回,需要显式指定<code>expand_wildcards</code>
   * 参数才能访问,默认值 false<br>
   * 可选值 open closed hidden none all
   *
   * @param value 值
   * @return {@link SettingsBuilder}
   */
  public SettingsBuilder setHidden(String value) {
    return this.set("hidden", value);
  }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2329207.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深入理解Python元组:从基础到高级应用

1. 元组基础认知 1.1 什么是元组 不可变序列&#xff1a;元组(tuple)是Python内置的不可变序列类型异构容器&#xff1a;可以存储不同类型的数据&#xff08;与列表类似&#xff09;语法特征&#xff1a;使用圆括号()定义&#xff0c;元素间用逗号分隔 # 基本示例 t1 (1, 2…

【零基础入门unity游戏开发——动画篇】unity旧动画系统Animation组件的使用

考虑到每个人基础可能不一样&#xff0c;且并不是所有人都有同时做2D、3D开发的需求&#xff0c;所以我把 【零基础入门unity游戏开发】 分为成了C#篇、unity通用篇、unity3D篇、unity2D篇。 【C#篇】&#xff1a;主要讲解C#的基础语法&#xff0c;包括变量、数据类型、运算符、…

Python+AI提示词用贝叶斯样条回归拟合BSF方法分析樱花花期数据模型构建迹图、森林图可视化

原文链接&#xff1a;https://tecdat.cn/?p41308 在数据科学的领域中&#xff0c;我们常常会遇到需要处理复杂关系的数据。在众多的数据分析方法中&#xff0c;样条拟合是一种非常有效的处理数据非线性关系的手段。本专题合集围绕如何使用PyMC软件&#xff0c;对樱花花期数据进…

实战打靶集锦-38-inclusiveness

文章目录 1. 主机发现2. 端口扫描&服务枚举3. 服务探查4.系统提权 靶机地址&#xff1a;https://download.vulnhub.com/inclusiveness/Inclusiveness.ova 1. 主机发现 目前只知道目标靶机在192.168.56.xx网段&#xff0c;通过如下的命令&#xff0c;看看这个网段上在线的主…

Unhandled exception: org.apache.poi.openxml4j.exceptions.InvalidFormatException

代码在main方法里面没有报错&#xff0c;在Controller里面就报错了。 原来Controller类里面少了行代码 import org.apache.poi.openxml4j.exceptions.InvalidFormatException; 加上去就解决了。

03.unity开发资源 获取

03.unity开发资源 获取 提示&#xff1a;帮帮志会陆续更新非常多的IT技术知识&#xff0c;希望分享的内容对您有用。本章分享的是Python基础语法。前后每一小节的内容是存在的有&#xff1a;学习and理解的关联性&#xff0c;希望对您有用~ unity简介-unity基础 第三节 &#xf…

OpenCV界面编程

《OpenCV计算机视觉开发实践&#xff1a;基于Python&#xff08;人工智能技术丛书&#xff09;》(朱文伟&#xff0c;李建英)【摘要 书评 试读】- 京东图书 OpenCV的Python开发环境搭建(Windows)-CSDN博客 OpenCV也支持有限的界面编程&#xff0c;主要是针对窗口、控件和鼠标…

【leetcode】记录与查找:哈希表的题型分析

前言 &#x1f31f;&#x1f31f;本期讲解关于力扣的几篇题解的详细介绍~~~ &#x1f308;感兴趣的小伙伴看一看小编主页&#xff1a;GGBondlctrl-CSDN博客 &#x1f525; 你的点赞就是小编不断更新的最大动力 &#x1f386;那么废话不…

AntDesign下,Select内嵌Menu标签,做一个多选下拉框,既可以搜索,还可以选择下拉项

话不多说&#xff0c;直接上效果和代码 效果图一&#xff1a; 效果图二&#xff1a; renderAddStyleOption (item: any) > {const { value } this.props;const { currentSelectedOptionIds, currentStyleId } this.state;const styleSettings value?.styleSettings;c…

css炫酷的3D水波纹文字效果实现详解

炫酷的3D水波纹文字效果实现详解 这里写目录标题 炫酷的3D水波纹文字效果实现详解项目概述技术栈核心实现1. 基础布局2. 渐变背景3. 文字效果实现3.1 基础样式3.2 文字漂浮动画 4. 水波纹效果4.1 模糊效果4.2 水波动画 5. 交互效果 技术要点项目难点与解决方案总结 项目概述 在…

P1036 [NOIP 2002 普及组] 选数(DFS)

题目描述 已知 n 个整数 x1​,x2​,⋯,xn​&#xff0c;以及 1 个整数 k&#xff08;k<n&#xff09;。从 n 个整数中任选 k 个整数相加&#xff0c;可分别得到一系列的和。例如当 n4&#xff0c;k3&#xff0c;4 个整数分别为 3,7,12,19 时&#xff0c;可得全部的组合与它…

后端思维之高并发处理方案

前言 在互联网时代&#xff0c;高并发已经成为后端开发者绕不开的话题。无论是电商平台的秒杀活动、抢购系统&#xff0c;还是社交应用的高频互动&#xff0c;高并发场景的出现往往伴随着巨大的技术挑战。 如何在流量激增的同时&#xff0c;确保系统稳定运行、快速响应&#xf…

14.2linux中platform无设备树情况下驱动LED灯(详细编写程序)_csdn

我尽量讲的更详细&#xff0c;为了关注我的粉丝&#xff01;&#xff01;&#xff01; 因为这跟之前的不一样&#xff0c;提出来驱动的分离和分层。 提到驱动分离和分层&#xff0c;必然可以联系上一章咱们知道的驱动-总线-设备。 在无设备树的状态下&#xff0c;必然要写寄存…

K8s的BackUP备份

文章目录 1、kubeadm 安装的单 master 节点数据备份和恢复方式2、Velero 工具3、Velero 服务部署4、备份还原数据 ETCD备份/还原有多种类型&#xff0c;取决于你 k8s 集群的搭建方式 1、kubeadm 安装的单 master 节点数据备份和恢复方式 拷贝 etcdctl 至 master 节点&#xf…

Ruoyi-vue plus 5.2.2 flowble设计流程点击开始流程图错误

网关设置条件或者是事件删除后出现&#xff0c;点击网关节点无法找到下面的事件节点。 配置页面事件错误&#xff0c;点背景配置进去了事件&#xff0c;发现再次加载&#xff0c;或者删除的时候VUE页面无法加载。 解决方式&#xff1a;查看XML文件&#xff0c;这个节点是否存在…

如何快速入门物联网单片机开发?

背景 物联网单片机硬件开发涉及多个阶段&#xff0c;元器件是否“自己设计”取决于具体需求。以下是详细解答和学习方案&#xff1a; 一、元器件是否自己设计&#xff1f; 通用元器件&#xff1a; 大多数情况下&#xff0c;开发者直接使用现成的标准化元器件&#xff08;如电阻…

在 .NET 8 中使用自定义令牌身份验证掌握 SignalR Hub 安全性

最近在练习做一个 Web 开发项目&#xff0c;需要使用 WebSockets 传输数据&#xff0c;实现实时通信。这是一个 React.js 项目&#xff0c;后端是 .NET。 虽然 MSDN 提供了出色的顶级文档&#xff0c;但它通常缺少高级用例所需的低级细节。 一种这样的场景是使用自定义令牌对…

基于springboot+vue的二手车交易系统

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

React安装使用教程

ReactAnt Designrouteraxios安装完整教程 官网&#xff1a;React Native 中文网 使用React来编写原生应用的框架 一&#xff0c;安装 npx create-react-app my-app npm start npm eject 暴露项目优先提交代码 git add . git commit -m “搭建项目“ 4.yarn add node-sass …

Day20 -自动化信息收集工具--ARL灯塔的部署

准备&#xff1a; 纯净的Docker环境 ARL的包 一、Docker的部署 00x1 更新系统包 sudo apt update 00x2 安装必要的依赖包 sudo apt install -y apt-transport-https ca-certificates curl software-properties-common 00x3 下载docker和docker-compose apt-get install do…