ElasticSearch索引管理

news/2024/4/26 11:28:53/文章来源:https://blog.csdn.net/xiaoxing598/article/details/128887714

title: ElasticSearch索引管理
date: 2022-08-31 00:00:00
tags:

  • ElasticSearch
  • 索引管理
    categories:
  • ElasticSearch

索引操作

  • 创建索引

    • 手动创建索引,可以在请求中加入所有设置和类型映射,例如:

      PUT /mytest3
      {"settings": {"number_of_shards": "3","number_of_replicas": "1"},"mappings": {"properties": {"description": {"type": "text","index": false}}}
      }
      
    • 如果在 config/elasticsearch.yml 中添加 action.auto_create_index: false 配置来防止自动创建索引。

  • 查看索引设置 GET /mytest3,可以指定响应对对象,例如 GET /mytest3/_settings

  • 检查索引是否存在 HEAD /mytest3

  • 打开索引 POST /mytest3/_open,关闭索引 POST /mytest3/_close。索引关闭后可以会在settings对象中增加 "verified_before_close": "true"

  • PUT mapping API

    • 允许你创建索引并设定Mapping,或者给存在的索引增加新的类型,或者在已有类型中增加新的字段。一般不能修改已有的字段。

    • 给存在的索引增加新的字段

      PUT /mytest3/_mapping
      {"properties": {"user_name": {"type": "text"}}
      }
      
    • 可以同时为多个索引设置mapping,通配符也同样是支持的。

    • 查询索引的mapping设置 GET /mytest3/_mapping,查询所有索引 GET /_all/_mapping,查看某个索引的字段 GET /mytest3/_mapping/field/user_name,description,也可以模糊匹配字段 GET /mytest3/_mapping/field/descrip*

  • 更新索引的设置

    • ES提供了优化好的默认配置,除非你明白这些配置的行为和为什么要这么做,请不要修改这些配置。
    • 下面是两个最重要的设置:
      1. number_of_shards:定义一个索引的主分片个数,默认值是以前是5,现在根据节点数来计算。这个配置在索引创建后不能修改。
      2. number_of_replicas:每个主分片的复制分片个数,默认是1。这个配置可以随时在活跃的索引上修改。
        PUT /mytest3/_settings
        {"index":{"number_of_replicas":2}
        }
        
    • 更新索引分析器,需要先关闭索引再更新,最后打开索引。
      POST /mytest3/_cloesePUT /mytest3/_settings
      {"analysis": {"analyzer": {"my_custom_analyzer": {"type":"custom", // 此参数可忽略"tokenizer":"whitespace"}}}
      }POST /mytest3/_open
      
  • Analyze API

    • 执行对文本的分析,然后返回token结果:
      GET /_analyze
      {"analyzer": "standard","text": "this is a 笔记本"
      }GET /_analyze
      {"analyzer": "ik_max_word","text": ["this is a 笔记本","Hello World! 世界你好!"]
      }
      

索引管理

  • 索引统计信息 GET /mytest3/_stats
  • 查询低级的Lucene中索引段的信息 GET /mytest3/_segments
  • 查看索引分片的恢复信息,会报告recovery的状态 GET /mytest3/_recovery
  • 提供查看索引分片的存储信息 GET /mytest3/_shard_stores
  • 用来清除一到多个索引相关缓存 POST /mytest3/_cache/clear
  • GET /mytest3/_flush 把索引在内存里面的数据,存储到具体的存储器上,并删除相应的内部事务日志。
    • 可以设置参数:
      1. wait_if_ongoing:缺省是false,如果设置为true,将会阻塞并等待其它正在执行flush的功能执行完成,然后再执行。
      2. force:是否有必要强制执行,即使没有改变也要flush。
    • 如果要同步f l ush,可以在后面设置synced,例如:GET /mytest3/_flush/synced
  • 刷新索引,使得上次refresh后的操作引起的变化,都能够反映到查询上。例如:GET /mytest3/_refresh
  • _refresh_flush 的区别,前者是将ES内存中的文档刷到Lucene缓存区(此步就可被搜索),后者是将Lucene segment刷到磁盘。

索引配置

  • 内存控制器
    • 在ES中有很多控制器可以防止内存溢出,每个控制器可以指定内存使用的最大值,除此之外,还有一个总的控制器在确定整个系统使用的最大内存值。这些配置都可以动态更新。
    • 总的内存控制有以下参数:indices.breaker.total.limit:
    • 总的内存使用大小,默认为JVM堆内存大小的70%。
  • 列数据内存大小
    • 列数据内存大小是指,在ES系统中,系统会估计有多少数据被加载到内存中,如果估计超过这个阀值,它可以通过一个异常来防止该字段的数据加载。
    • indices.breaker.fielddata.limit:列数据内存大小的限制,默认为JVM堆内存大小的60%。
    • indices.breaker.fielddata.overhead:所有列估计的内存大小的乘积,默认是1.03。
  • 请求控制器,防止Elasticsearch每个请求的数据结构超过一定的值:
    • indices.breaker.request.limit:请求控制器的大小,默认为JVM堆内存大小的40%。
    • indices.breaker.request.overhead:所有请求的乘积,默认为1。
  • 数据缓存
    • 现场数据缓存主要用于当排序或聚合操作的时候。它将所有的字段值加载到内存中以便提供快速访问文档中的这些值。
    • indices.fielddata.cache.size:数据缓存的最大值,可以是一个节点的堆内存大小的比例,例如30%,也可以是一个绝对数字,比12GB。默认是无限制,可以最大的利用内存。这个配置是静态的配置,必须在集群中的每个数据节点上启动前配置好。可以通过 GET /_nodes/stats 请求来监控节点的使用情况。
  • 节点查询缓存
    • 查询缓存是负责缓存查询的结果。每个节点都有一个查询缓存,这个缓存为这个节点下的所有分片服务。这个缓存采用最近最少使用算法; 当缓存满时,把最少使用的数据优先删掉。查询缓存只有使用过滤的时候才会起作用。
    • indices.queries.cache.size:可以是一个节点的堆内存大小的比例,例如5%,也可以是一个绝对数字,比如512mb。默认为JVM堆内存大小的10%。
  • 索引缓冲区
    • 索引缓冲区用于存储新的索引文档。当缓冲区满后,缓冲区中的文件被写入磁盘上的一个段,它会在节点的所有分片上分离。它的设置是静态的,并且必须在群集中的每个数据节点上配置。
    • indices.memory.index_buffer_size:一个节点索引缓冲区的大小,可以是一个节点的堆内存大小的比例获知是一个绝对数字。默认为JVM堆内存大小的10%。
    • indices.memory.min_index_buffer_size:可以使用此设置指定最小的索引缓冲区大小。默认为48MB。
    • indices.memory.max_index_buffer_size:可以使用此设置指定最大的索引缓冲区大小。默认为无限制。
    • indices.memory.min_shard_index_buffer_size:分配给每个分片索引缓冲区的内存最小值,默认4MB。
  • 分片请求缓存
    • 当一个搜索请求是对一个索引或者多个索引的时候,每一个分片都是进行它自己内容的搜索然后把结果返回到协调节点,然后把这些结果合并到一起统一对外提供。分片缓存模块缓存了这个分片的搜索结果。这使得搜索频率高的请求会立即返回。
    • 注意:请求缓存只缓存查询条件size=0的搜索,缓存的内容有hits.total, aggregations, suggestions,不缓存原始的hits。通过now查询的结果将不缓存。
  • 缓存失效
    • 只有在分片的数据实际上发生了变化的时候刷新分片缓存才会失效。刷新的时间间隔越长,缓存的数据越多,当缓存不够的时候,最少使用的数据将被删除。缓存过期可以手工设置,例如:
    • 默认情况下缓存未启用,但在创建新的索引时可启用,例如:
      PUT /mytest4
      {"settings": {"number_of_shards": "2","number_of_replicas": 1,"index.requests.cache.enable": true}
      }
      
    • 当然也可以通过动态参数配置来进行设置:
      PUT /mytest3/_settings
      {"index.requests.cache.enable": true
      }
      
    • 每请求启用缓存,查询字符串参数request_cache可用于启用或禁用每个请求的缓存。例如:GET /mytest/_search?request_cache=true
      1. 如果你的查询使用了一个脚本,其结果是不确定的(例如,它使用一个随机函数或引用当前时间)应该设置request_cache为false禁用请求缓存。
      2. 数据的缓存是整个JSON,这意味着如果JSON发生了变化 ,如顺序不同,缓存的内容将会不同。
  • 监控缓存使用
    • 可以通过 GET /mytest4/_stats/request_cache 或者 GET /_nodes/stats/indices/request_cache 来缓存监控,缓存的大小(以字节为单位)。
  • 索引恢复
    • indices.recovery.concurrent_streams:默认为3。
    • indices.recovery.concurrent_small_file_streams:默认为2。
    • indices.recovery.file_chunk_size:默认为512KB。
    • indices.recovery.translog_ops:默认为1000。
    • indices.recovery.translog_size:默认为512KB。
    • indices.recovery.compress:默认为true。
    • indices.recovery.max_bytes_per_sec:默认为40MB。
  • TTL区间
    • 文档有个ttl值可以设置当过期的时候是否需要删除,设置如下:
      • indices.ttl.interval:删除程序的运行时间。默认为60。
      • indices.ttl.bulk_size:删除处理与批量请求的数量,默认为10000。

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Win10 环境 安卓ollvm编译与配置 ndk代码混淆加密

确定你正在使用的ndk版本 查看build.gradle ndkVersion 21.4.7075529 确定你使用的ndk的ollvm版本 C:\Users\Administrator\AppData\Local\Android\Sdk\ndk\21.4.7075529\toolchains\llvm\prebuilt\windows-x86_64\bin\llvm-config.exe --version 9.0.9svn 确定了ollvm版本后…

动手学深度学习(第二版)学习笔记 第二章

官网:http://zh.d2l.ai/ 视频可以去b站找 记录的是个人觉得不太熟的知识 第二章 预备知识 代码地址:d2l-zh/pytorch/chapter_preliminaries 2.1 数据操作 2.1. 数据操作 — 动手学深度学习 2.0.0 documentation 如果只想知道张量中元素的总数&#…

GIT分支管理策略

git基本操作git操作的前提条件:本地windows安装git学习idea中的插件使用idea的git基本操作:远程仓库remote更新fetch:git fetch拉取pull: git pull上传push: git push合并merge: git merge 合并分支本地提交commit:git commit分支branch: git branch 查看分支或者 切换分支上述…

软件设计(十四)-UML建模(上)

软件设计(十三)-原码、反码、补码、移码https://blog.csdn.net/ke1ying/article/details/129115844?spm1001.2014.3001.5501 UML建模包含:用例图,类图与对象图,顺序图,活动图,状态图&#xff…

web网页如何实现响应式导航栏--移动端导航栏

背景: 一提到响应式导航栏,大家第一反应可能就是bootstrap响应式导航栏,这个响应式的一般是针对屏幕变小时,视口出现导航栏,可是,展示到移动端的时候,并没有变化??&#…

京东测试进阶之路:初入测试碎碎念篇

1、基本的测试用例设计方法 基本的测试用例设计方法(边界值分析、等价类划分等)。 业务和场景的积累,了解测试需求以及易出现的bug的地方。 多维角度设计测试用例(用户、业务流程、异常场景、代码逻辑)。 2、需求分析 …

ccc-pytorch-基础操作(2)

文章目录1.类型判断isinstance2.Dimension实例3.Tensor常用操作4.索引和切片5.Tensor维度变换6.Broadcast自动扩展7.合并与分割8.基本运算9.统计属性10.高阶OP大伙都这么聪明,注释就只写最关键的咯1.类型判断isinstance 常见类型如下: a torch.randn(…

虹科新闻 | 虹科与b-plus正式建立合作伙伴关系,共同致力于用于ADAS/AD系统开发的VV测量解决方案

虹科b-plus 携手共创未来! 近期,虹科与德国b-plus正式建立合作伙伴关系。未来,虹科与b-plus将共同致力于提供用于ADAS/AD系统开发的V&V测量解决方案。 合作寄语 虹科CEO陈秋苑女士表示:“虹科非常期待与b-plus合作&#x…

Microsoft Dynamics 365:导入License到服务层,通过Business Central Administration Shell

本文主要是Microsoft Dynamics 365的License导入的图解干货,不多赘述,直接上图:第一步:准备好的License文件放在你喜欢的目录下第二步:到开始程序里找到并打开 Business Central Administration Shell3.第三步&#xf…

Day895.MySql误删数据还原方案 -MySQL实战

MySql误删数据还原方案 Hi,我是阿昌,今天学习记录的是关于MySql误删数据还原方案的内容。 传统的高可用架构是不能预防误删数据的,因为主库的一个 drop table 命令,会通过 binlog 传给所有从库和级联从库,进而导致整…

ASE20N60-ASEMI的MOS管ASE20N60

编辑-Z ASE20N60在TO-247封装里的静态漏极源导通电阻(RDS(ON))为0.4Ω,是一款N沟道高压MOS管。ASE20N60的最大脉冲正向电流ISM为80A,零栅极电压漏极电流(IDSS)为10uA,其工作时耐温度范围为-55~150摄氏度。ASE20N60功耗…

UVM实战--加法器

前言 这里以UVM实战(张强)第二章为基础修改原有的DUT,将DUT修改为加法器,从而修改代码以使得更加深入的了解各个组件的类型和使用。 一. 组件的基本框架 和第二章的平台的主要区别点 (1)有两个transactio…

我的三周年创作纪念日——学习不止,创作不停

机缘 最开始写文章博客,是为了用输出倒逼自己输入。 从校园离开后,才逐渐意识到学习的不容易。没有写好的教材课程、没有画好的考点重点,没有一起学习的同学,更没有明确的学习方向和路径。 数据分析方向可以学的东西太多了&…

P18 PyTorch 感知机的梯度推导

前言这里面简单介绍一下单层感知机和多层感知机的模型参考:https://www.bilibili.com/video/BV17e4y1q7NG?p41一 单层感知机模型输入: k 代表网络层数,i 代表输入节点的编号前向传播: 权重系数k: 层数i: 前一层输入节点编号j: 当前层输出节点编号这里&a…

软件工程学习

文章目录前言软件特点分类软件工程软件危机项目管理工具总结前言 本博客仅做学习笔记,如有侵权,联系后即刻更改 科普: 软件 软件的定义 软件不是程序,而是程序、数据以及开发、使用和维护程序需要的所有文档的完整集合。 特点 …

windows 安装Qt

下载 下载地址https://download.qt.io/,此文已5.7.0为例子。 根据图片依次选择即可。 安装 安装过程参考另一篇文章Ubuntu 安装 Qt5.7.0即可 配置环境变量 ps:我就是之前没配置环境变量,直接使用创建项目,项目源码直接运行是…

CentOS7安装MariaDB步骤

文章目录1.配置MariaDB yum源2.安装MariaDBMariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。 CentOS 6 或早期的版…

数据结构与算法基础(王卓)(11):栈的定义及其基础操作(顺序表和链表的初始化、求长度,是否为空,清空和销毁、出栈、压栈)

栈的定义: stack:一堆,一摞;堆;垛; 顺序栈和链栈的设计参考: 数据结构与算法基础(王卓)(7):小结:关于链表和线性表的定义及操作_宇 -Yu的博客-C…

备考软考系统分析师-1

系统分析师教程网盘资源:链接: https://pan.baidu.com/s/1ekHuCJJ3o5RrW1xeMkxhdA 提取码: 6666 信息系统战略规划 信息系统开发方法: 结构化法 瀑布模型 原型法 自顶向下 用于需求阶段较多 面向对象 自底向上 面向服务的方法 系统建模 政府信息…

MyBatis-Plus——代码生成器(3.5.1+版本)

文章目录配置数据源配置(DataSource)全局配置(GlobalConfig)包配置(PackageConfig)策略配置(StrategyConfig)模板引擎配置(TemplateEngine)代码生成器测试样例…