Elasticsearch之缓存
转自:https://www.jianshu.com/p/1ec202148189 Elasticsearch 包含三个类型的缓存,分别为: Node Query Cache 、 Shard Request Cache 、 Fielddata Cache。 Node Query Cache作用域Query Cache是Node级别的,被所有shard共享。 早期版本也叫做为Filter Cache,顾名思义,它的作用是对过滤器的执行结果进行缓存。 Query Cache缓存的是压缩过的bitset,对应满足Query条件的docID列表。添加cache的时候,会注册一个回调,如果Segment被合并或者删除,那么就会被移除缓存 简单来看可以这样理解,一个ES的查询会先被parse 成一系列Lucene 的phrase,这些phrases 中的filter语句,如果对于查询条件是一样的时候,其实结果集是已定的,那么这些phrase 其实就是可以存放在一个地方当做cache用,这个就是 query...
Elasticsearch:Snapshot备份与恢复
SnapshotElasticsearch文档里对于snapshot有如下描述: 1The index snapshot process is incremental. In the process of making the index snapshot Elasticsearch analyses the list of the index files that are already stored in the repository and copies only files that were created or changed since the last...
记录ES使用分页查询的几种方式
摘自:https://cloud.tencent.com/developer/article/2110964 ES支持的三种分页查询方式 From + Size 查询 Search After 查询 Scroll 遍历查询 「说明:」 官方已经不再推荐采用Scroll API进行深度分页。如果遇到超过 10000 的深度分页,推荐采用search_after + PIT。 官方文档地址:https://www.elastic.co/guide/en/elasticsearch/reference/7.14/paginate-search-results.html。 分布式系统中的深度分页问题「为什么分布式存储系统中对深度分页支持都不怎么友好呢?」 首先我们看一下分布式存储系统中分页查询的过程。 假设在一个有 4 个主分片的索引中搜索,每页返回10条记录。 当我们请求结果的第1页(结果从 1 到 10 ),每一个分片产生前 10 的结果,并且返回给 协调节点 ,协调节点对 40 个结果排序得到全部结果的前 10 个。 当我们请求第 99 页(结果从 990 到...
elasticsearch7.x白金版破解
背景 因为要将es接入ldap认证,而该功能是收费版本,所以我这里选择破解白金版 原理license中有个signature字段,ES会根据这个字段判断License是否被篡改。只要取消ES的这个判断逻辑,就可以随便篡改License,达到激活的目的了。 下面的示例将会以官方 ES Docker 镜像 7.14.0...
分词搜索需求整理
背景 项目使用nodejs开发 数据使用nodejieba+pinyin进行分词处理 现需要将这里的逻辑放到es处理 目标 搜索框搜索的内容包含了三个字段: 品牌, 主机厂, 车型, 用于搜索的search_key字段使用${品牌} ${主机厂} ${车型}格式存储数据 全中文关键词查询: 一汽奥迪 -> 奥迪 一汽大众(奥迪) 100 全英文(拼音)或者英文(拼音)加数字: cg k1 -> 成功 成功汽车 K1 中文带英文(拼音)或者数字: 福特进口 bir -> 福特 福特(进口) Thunderbird [雷鸟] 安装分词器(ik,pinyin) 参考站内es中的各种分词器 配置字典表及热更新 参考站内ik分词器自定义词库热更新 keyword.dic 123恒润荣放... 索引配置 put...
ik分词器自定义词库热更新
官方热更新 IK 分词使用方法目前该插件支持热更新 IK 分词,通过上文在 IK 配置文件中提到的如下配置 1234 <!--用户可以在这里配置远程扩展字典 --><entry key="remote_ext_dict">location</entry> <!--用户可以在这里配置远程扩展停止词字典--><entry key="remote_ext_stopwords">location</entry> 其中 location 是指一个 url,比如 http://yoursite.com/getCustomDict,该请求只需满足以下两点即可完成分词热更新。 该 http 请求需要返回两个头部(header),一个是 Last-Modified,一个是 ETag,这两者都是字符串类型,只要有一个发生变化,该插件就会去抓取新的分词进而更新词库。 该 http 请求返回的内容格式是一行一个分词,换行符用 \n...
minimum_should_match最低匹配度
minimum_should_match顾名思义:最低匹配度,即条件在倒排索引中最低的匹配度。 1. minimum_should_match的使用1.1 数据准备1234567891011121314151617181920212223242526# 创建索引PUT test_match# 创建映射PUT test_match/_mapping{ "properties":{ "price":{ "type":"double" }, "name":{ "type":"text" } }}# 批量导入数据PUT...
elasticsearch遇到UNASSIGNED分片问题
背景启动es后发现查询报错, 且存在Unassigned的状态 分析问题检查分片状态(_cluster/allocation/explain/?pretty) cannot allocate because a previous copy of the primary shard existed but can no longer be found on the nodes in the cluster 12345678910111213141516171819202122232425262728293031[user_es@VM_113_96_centos elasticsearch-7.9.3]$ curl -XGET "http://localhost:9200/_cluster/allocation/explain/?pretty"{ "index" : ".kibana_task_manager_1", "shard" : 0, ...
es中文拼音混合搜索
1. 使用场景介绍搜索功能支持:拼音检索,中文检索,拼音中文混合检索例如:输入:l德h【期望结果】:刘德华 和刘德华4【不期望结果】:刘得华 、刘的华 2. 下载pinyin 插件github地址注意:下载的版本要与自己的ES版本一致 3. 修改插件源码以及安装注意: 1)目前v7.13.1 已经支持拼音中文混合检索 可以直接安装插件直接使用 2)我本地目前是v7.9.3 ,所以需要对源码进行修改;如果你的ES版本也是低于v7.13.1版本;也需要进行修改; 我修改方法: 1)下载源码, checkout tag-v7.9.3 源码和tag-v7.13.1源码 2)通过compare进行比较,直接把v7.13.1 多余的代码复制到 v7.9.3 中 3)修改pom 的elasticsearch.version为7.9.3 4)maven 打包 mvn clean package 5)将\target\releases\elasticsearch-analysis-pinyin-7.9.3.zip 解压到\plugins\analysis-pinyin 文件夹下 4....
elasticsearch聚合使用方式
数据聚合聚合(aggregations) 可以让我们极其方便的实现对数据的统计、分析、运算。例如: 什么品牌的手机最受欢迎? 这些手机的平均价格、最高价格、最低价格? 这些手机每月的销售情况如何? 实现这些统计功能的比数据库的sql要方便的多,而且查询速度非常快,可以实现近实时搜索效果。 聚合分类 名称 作用 对比Mysql 分桶类型 (Bucket) 满足特定条件的文档的集合 类似GROUP BY语法 指标分析类型(Metric) 计算最大值,最小值,平均值等 类似 COUNT 、 SUM() 、 MAX() 等统计方法 管道分析类型(Pipeline) 对聚合结果进行二次分析 矩阵分析类型(Matrix) 支持对多个字段的操作并提供一个结果矩阵 Bucket聚合分析按照Bucket的分桶策略,常见的Bucket聚合分析如下: 策略 描述 Terms 最简单策略,如果是text类型,则按照分词后的结果分桶 Range 按照指定数值的范围来设定分桶规则 Date...