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 cache。 配置参数既然是缓存,肯定会对数量和内存有限制。通过_nodes/stat...
Elasticsearch 数据建模
Elasticsearch 数据建模数据建模 数据建模是创建数据模型的过程 数据模型是对真实世界进行抽象描述的一种工具和方法,实现对现实世界的映射 三个过程:概念模型=》逻辑模型=》数据模型 数据模型:结合具体的数据库,在满足业务读写性能等需求的前提下,确定最终定义 数据建模:功能需求+性能需求 逻辑模型(功能需求) 实体属性 实体之间的关系 搜索相关的配置 物理模型(性能需求) 索引模版 分片数量 索引Mapping 字段配置 关系处理 对字段进行建模 字段类型: Text vs Keyword Text 用于全文本字段,文本会被Analyzer分词 默认不支持聚合分析及排序。需要设置fielddata为true Keyword 用于id,枚举及不需要分词的文本。例如电话号码,email地址,手机号码,邮政编码,性别等 适用于Filter(精确匹配),Sorting和Aggregations 设置多字段类型 默认会为文本类型设置成text,并且设置一个keyword的子字段 在处理人类语言时,通...
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 snapshot. 这里说snapshot是增量备份的,每次snapshot,Es会分析index文件,并且只备份增量部分。 snapshot 是增量备份,对未发生变化的 index 重复备份几乎没有资源消耗。 删除某个 snapshot 不会对其它 snapshot 产生影响。 操作建仓 ES是通过快照的方式来实现数据备份,并且是以增量的方式,所以一般第一次做的话会花费较长的时间。为了做快照,那么就需要注册...
Elasticsearch 基本使用
1. 了解 ES1.1.1. Elasticsearch 的作用elasticsearch是一款非常强大的开源搜索引擎,具备非常多强大功能,可以帮助我们从海量数据中快速找到需要的内容 1.1.2. ELK 技术栈elasticsearch结合kibana、Logstash、Beats,也就是elastic stack(ELK)。被广泛应用在日志数据分析、实时监控等领域: 而elasticsearch是elastic stack的核心,负责存储、搜索、分析数据。 1.1.3. Elasticsearch 与 Luceneelasticsearch底层是基于lucene来实现的。 Lucene是一个Java语言的搜索引擎类库,是Apache公司的顶级项目,由DougCutting于1999年研发。官网地址:https://lucene.apache.org/ 。 elasticsearch的发展历史: 2004年Shay Banon基于Lucene开发了Compass 2010年Shay Banon 重写了Compass,取名为Elasticsearch...
ES 知识小结
基本概念 文档型存储的中间件,以 JSON 格式进行数据存储 支持对文档数据的增删改查,即 CRUD 操作 使用分片和复制技术,支持处理超大规模数据 基于 Java 编写,天然支持分布式,主副分片自动分配和复制 基于 Hash 模式进行分片路由 全文检索功能强大,字段自动建立倒排索引 适合用于搜索及日志存储场景,但写入数据并非实时可见,取决于 refresh_interval 参数的配置 集群核心概念 集群(cluster):由一个或多个节点组成,通过集群名称与其他集群区分。 节点(node):单个 Elasticsearch 实例,通常运行在一个隔离的容器或虚拟机中。 索引(index):一组文档的集合,类似关系型数据库中的"表"。 分片(shard):索引被拆分为多个分片,分布在不同节点上。ES 自动管理分片的分配和再平衡,用户无需关心细节。 副本(replica):主分片的完整拷贝。ES 默认为每个索引创建 5 个主分片,并为每个主分片创建 1 个副本。主分片和副本均可处理查询请求,但只有主分片能处理写入请求。副本可随时动态增减,额外副本能带来更大...
Too many dynamic script compilations within, max[75/5m]
ResponseError: search_phase_execution_exception: [circuit_breaking_exception] Reason: [script] Too many dynamic script compilations within, max: [75/5m]; please use indexed, or scripts with parameters instead; this limit can be changed by the [script.context.number_sort.max_compilations_rate] setting
Elasticsearch 聚合使用方式
数据聚合聚合(aggregations) 可以让我们极其方便的实现对数据的统计、分析、运算。例如: 什么品牌的手机最受欢迎? 这些手机的平均价格、最高价格、最低价格? 这些手机每月的销售情况如何? 实现这些统计功能的比数据库的sql要方便的多,而且查询速度非常快,可以实现近实时搜索效果。 聚合分类 名称 作用 对比Mysql 分桶类型 (Bucket) 满足特定条件的文档的集合 类似GROUP BY语法 指标分析类型(Metric) 计算最大值,最小值,平均值等 类似 COUNT 、 SUM() 、 MAX() 等统计方法 管道分析类型(Pipeline) 对聚合结果进行二次分析 矩阵分析类型(Matrix) 支持对多个字段的操作并提供一个结果矩阵 Bucket聚合分析按照Bucket的分桶策略,常见的Bucket聚合分析如下: 策略 描述 Terms 最简单策略,如果是text类型,则按照分词后的结果分桶 Range 按照指定数值的范围来设定分桶规则 Date Range 通过指定日期的范围来设定分桶规则 Histogr...
Elasticsearch 7.x 白金版破解记录
背景因为需要将 ES 接入 LDAP 认证,而该功能属于收费的白金版特性,所以选择破解白金版 License。 原理license 中有一个 signature 字段,ES 会根据该字段判断 License 是否被篡改。只要绕过这个校验逻辑,就可以任意修改 License 内容,从而激活白金版。 以下示例基于官方 ES Docker 镜像 7.14.0 版本,原则上支持任意版本破解。 破解流程下载对应 Elasticsearch 源文件地址:https://www.elastic.co/cn/downloads/past-releases#elasticsearch 下载对应版本后,需要进行编译操作,环境使用 WSL + Windows,下载 Windows 或 Linux 版本均可。 解压文件解压到 D:\elasticsearch-7.14.0,主要修改的 jar 包为:D:/elasticsearch-7.14.0/modules/x-pack-core/x-pack-core-7.14.0.jar 反编译提取源文件使用 Luyten 反编译 jar 包内的 clas...
Elasticsearch DSL 使用指南
1. DSL 查询文档Elasticsearch 的查询依然是基于 JSON 风格的 DSL 来实现的。 1.1. DSL 查询分类Elasticsearch提供了基于JSON的DSL(Domain Specific Language)来定义查询。常见的查询类型包括: 查询所有:查询出所有数据,一般测试用。例如:match_all 全文检索(full text)查询:利用分词器对用户输入内容分词,然后去倒排索引库中匹配。例如: match_query multi_match_query 精确查询:根据精确词条值查找数据,一般是查找keyword、数值、日期、boolean等类型字段。例如: ids range term 地理(geo)查询:根据经纬度查询。例如: geo_distance geo_bounding_box 复合(compound)查询:复合查询可以将上述各种查询条件组合起来,合并查询条件。例如: bool function_score 查询的语法基本一致: 12345678GET /indexName/_search{ &...
Elasticsearch UNASSIGNED 分片问题排查与解决
背景启动 ES 后发现查询报错,且存在 Unassigned 分片状态。 分析问题检查分片状态(_cluster/allocation/explain)错误信息: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, "primary"...
