ElasticSearch 动态更新索引

article/2025/10/9 16:21:41

在这里插入图片描述

Elasticsearch版本:2.x

1. 不变性

倒排索引被写入磁盘后是 不可改变(immutable):永远不会被修改。不变性有如下几个重要的优势:

  • 不需要锁。如果你没有必要更新索引,你就没有必要担心多进程会同时修改数据。
  • 一旦索引被读入内核的文件系统缓存中,由于其不会改变,便会留在那里。只要文件系统缓存中还有足够的空间,那么大部分读请求会直接请求内存,而不会命中磁盘。这提供了很大的性能提升。
  • 其它缓存(例如filter缓存),在索引的生命周期内始终保持有效。因为数据不会改变,不需要在每次数据改变时被重建。
  • 写入一个大的倒排索引中允许数据被压缩,减少磁盘 I/O 和 缓存索引所需的RAM量。

当然,一个不变的索引也有缺点。主要是它是不可变的! 你不能修改它。如果你需要让一个新的文档可被搜索,你需要重建整个索引。这对索引可以包含的数据量或可以更新索引的频率造成很大的限制。

2. 动态更新索引

下一个需要解决的问题是如何更新倒排索引,而不会失去其不变性的好处? 答案是:使用多个索引。通过增加一个新的补充索引来反映最近的修改,而不是直接重写整个倒排索引。每一个倒排索引都会被轮流查询–从最旧的开始–再对各个索引的查询结果


http://chatgpt.dhexx.cn/article/YDgHfO58.shtml

相关文章

MySQL:插入,更新与删除、索引

一、学习目标 掌握如何向表中插入数据掌握更新数据的方法熟悉如何删除数据掌握对数据表基本操作的方法和技巧了解什么是索引掌握创建索引的方法和技巧熟悉如何删除索引熟悉掌握索引的常见问题 二、实验内容 创建表books,对数据表进行插入、更新和删除操作&#x…

搜索引擎索引之如何更新索引

本文节选自《这就是搜索引擎:核心技术详解》第三章 动态索引通过在内存中维护临时索引,可以实现对动态文档和实时搜索的支持。但是服务器内存总是有限的,随着新加入系统的文档越来越多,临时索引消耗的内存也会随之增加。当最初分…

IDEA总是自动更新索引怎么解决

从File进入settings 搜索index_>修改右边的两个即可,点击OK保存即可

项目中如何使用ElasticSearch?变更数据时难道既更新数据库也要更新索引?这篇文章也许对你有点帮助(持续更新)

目录 1. 概述2.ElasticSearch的调试2.1 启动ES2.2 创建搜索的微服务2.3 使用logstash同步数据库数据到es的索引中 3.Linux系统下部署3.1 拉取es容器3.2 让9300端口可用3.3 安装ik分词器3.4 安装head-master3.5 配置logstash(耗时最久) 四. 出现的bug4.1 …

【Mysql】 sql语句实现update_or_create(唯一索引 ON DUPLICATE KEY UPDATE)

【Mysql】 on duplicate key update用法、优缺点以及使用案例 1. 应用场景: 导入数据功能,需要实现数据不存在时进行新建,有数据修改时则进行更新。在实现时,思路通常为先判断数据是新增还是更新,除了我们在代码层面实…

mysql-索引

1.索引的定义: 索引是帮助MySql高效获取数据的数据结构。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索…

mysql中的各种索引大总结

文章目录 为啥不用二叉搜索树?为啥不用平衡二叉(avl)树?为啥不用b-树?为啥用b树?(重点)索引聚簇索引聚簇索引的局限聚集的数据的优点非聚簇索引介绍组合索引覆盖索引前缀索引前缀索引…

MySQL索引的更新策略

对于数据的每一次更新,MySQL并不会每次都会更新索引(针对非唯一性索引而言),索引的更新策略是这样的: 在InnoDB中,增删改都会立刻修改主键or唯一索引,但是不会rebuild全局索引,而是对这些索引增加值(或移除…

苹果各机型尺寸大小

//6.5英寸 #define iPhoneXSMax ([UIScreen instancesRespondToSelector:selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1242, 2688), [[UIScreen mainScreen] currentMode].size) : NO) //6.1英寸 #define iPhoneXR ([UIScreen instancesRespondToSelector:selec…

iOS 手机尺寸

iPhone设备 物理分辨率是硬件所支持的,逻辑分辨率是软件可以达到的。 代数设备操作系统逻辑分辨率(point)物理分辨率(pixel)屏幕尺寸(对角线长度)缩放因子 iPhone 第一代iPhone 2GiOS 1320 x 480480 x 3203.5寸1x第二代iPhone 3iOS 2320 x 480480 x 3203.5寸1…

jQuery weui 时间选择器datetimepicker年月日最简单解决方案

使用jqweui的时候发现,datetimePicker(时间日期选择器)竟然不提供只有年月日这种模式,真是牛逼(垃圾),跟着我,只需要很简单的修改就好了,上图 下面是js $("#datati…

jquery weui 显示loading

jQuery weui 显示loading按钮官方文档并没有给出demo&#xff0c;经过调试&#xff0c;把代码给拷贝了出来。 实现显示loading的代码如下&#xff1a; <div id"loadDiv" style"display: none;" class"weui-toast weui_loading_toast weui-toast--…

$ppclass php,jquery weui

"weui-tab"!----"weui-"!--二级页积分详情--"""weui--itemweui-tab__bd-item--active"divclass"details"divclass"page-header"?Html::img($this-theme-getAssetUrl(images/logo.png),[classlogo])?/divahref&q…

移动端框架之JQuery WeUI

和JQuery WeUI 配合使用的WeUI&#xff0c;是移动端快速开发的利器。 在初步使用的过程中&#xff0c;发现JQuery WeUI扩展的几个功能特别实用&#xff1a; 1.通知&#xff1a;模仿iOS风格的通知。你可以自定义标题&#xff0c;文案和图标。通过滑动手势可以关闭。 这种通知形…

基于Jquery WeUI的微信开发H5页面控件的经验总结(2)

在微信开发H5页面的时候&#xff0c;往往借助于WeUI或者Jquery WeUI等基础上进行界面效果的开发&#xff0c;由于本人喜欢在Asp.net的Web界面上使用JQuery&#xff0c;因此比较倾向于使用 jQuery WeUI&#xff0c;本篇随笔结合官方案例和自己的项目实际开发过程的经验总结&…

jquery weui 图片浏览器Photo Browser 如何使用?

对应组件地址&#xff1a;http://jqweui.com/extends#swiper 先说说业务场景&#xff1a;类似朋友圈这样的布局效果&#xff0c;点击小图可以浏览大图&#xff0c;并支持大图左右切换&#xff0c;效果图如下&#xff08;加了滚动加载更多的操作在里面&#xff09;&#xff1a;…

jQuery WeUI日历calendar时间段(开始日期默认选中日期是今天,结束日期设置最小日期),显示日期格式是yyyy年mm月dd日

jQuery WeUI官网&#xff1a; https://jqweui.cn(国内) 说明 日历calendar时间段为两段&#xff0c;开始日期和结束日期。 开始日期&#xff1a;打开后&#xff0c;默认选中日期是今天。 结束日期&#xff1a;打开后&#xff0c;默认选中和最小日期是开始日期。 html <d…

【WeUI】关于jQuery WeUI和WeUI版本兼容的问题

最近做的一个小demo&#xff0c;在添加Dialog的时候出现了对话框显示的问题&#xff0c;如下左图所示。 一开始以为自己的写的CSS文件影响了&#xff0c;注释掉还是这个问题&#xff0c;所以问题指向很明确了&#xff0c;是官方weui.css的问题。但是官方demo里的运行是正常显示…

jQueryWEUI自定义对话框-带有textarea

jQueryWEUI 示例下载 在jQueryWEUI中提供了很多类型的对话框&#xff0c; 可以去访问看一下。 今天记录的则是&#xff0c;自己定义的一个带有文本域的对话框&#xff0c;这样&#xff0c;可以不通过调转页面&#xff0c;实现一些信息的提交。比如&#xff0c;发送留言&#x…

jQuery weui 时间选择器datetimepicker只用年月日

<input placeholder"请选择出生日期" name"birth_time" type"text" iddatetime-picker />let allTime ;var myDate new Date();//let CreateDateLessD myDate.getFullYear() "-" (myDate.getMonth() 1) "-" …