
ES
文章平均质量分 77
bohu83
微信:bohu83
展开
-
推荐一款es轻量级的压测工具
如果测试服务器充足,可以部署在多个上,一个节点可以部署多个loadgen.改下名字。之前折腾2天想用es 官网推荐的es压测工具,各种坑,参见我之前的安装过程。如何修改参数,参见官网:就是设置es的账户,ip, 写body,读的url。开多个情况,每个设置不同的配置,这样更好的模拟线上的不同读写速率,值得推荐。有一点,这是基准的压测,不能很好的模拟线上的同事读写某个比例的情况。分别设定不同的并发,模拟业务读写不同的es索引。下载,解压,修改loadgen.yml 即可。这里面很多参数,主要是读写的速度。原创 2022-10-27 14:55:47 · 2235 阅读 · 2 评论 -
centos7 安装esrally 踩坑过程
centos 安装es压测工具earally,因为网络差异, 按照官网的步骤来,一步一个坑那基本上就是下载很慢,半天过去爬不出来。我把踩坑记录贴出来,希望能帮到你原创 2022-10-09 16:42:13 · 1593 阅读 · 0 评论 -
ES 监控平台(极限数据平台)的感受
一 背景ES挂过一次,想增加一些参数监控,比如线程池的监控。比起es自带的kibana监控,的确强大了很多。各种参数都有,切换不同es集群很方便,也可以打开控制台执行query。其他参见官网。 我使用的版本是稳定版:console-0.3.0-458-linux-386.tar.gz对应es是7.10.2二 使用一周发现的问题 1 系统会莫名挂掉,页面打不开。错误日志:”07-07 14:32:04] [INF] [app.go:175] using config: /root/console/cons原创 2022-07-07 14:56:42 · 1164 阅读 · 0 评论 -
记一次ES 事故
es 线程池满,Caused by: org.elasticsearch.common.util.concurrent.EsRejectedExecutionException: rejected execution of org.elasticsearch.transport.TcpTransport$RequestHandler原创 2022-06-10 10:21:48 · 823 阅读 · 1 评论 -
ES 使用正则表达式模糊匹配
关于模糊匹配官网上有例子。我自己试了下:类似马冬梅,大爷问的马什么梅?但是看了ES自己的官方博客:https://blog.youkuaiyun.com/ubuntutouch/article/details/104136035虽然在上面我们得到我们想要的结果,但是在实际使用 regexp 搜索时,我们必须记住如下的事项:避免通配符在前面,比如上面的.*work。可能以避免使用前导通配符的方式对数据建立索引 通常,正则表达式可能会很昂贵如果面向的C端用户的。还是谨慎性吧。影响了整.原创 2021-01-22 10:38:06 · 3511 阅读 · 0 评论 -
ES 查询每个属性非空
一开始我用了空字符串“”,发现不好使,应为没有的是null,GET XX/yy_index/_search{ "query": { "bool": { "must":{ "exists":{"field":"code"} } } }}就是改为判断存不存在就行。原创 2020-11-25 15:50:14 · 2780 阅读 · 0 评论 -
ES 根据查询条件求和sum
最简单的查询求和,类似于SQL: select sum(XX) from table where ;不需要group by. 也就不需要TermsAggregationBuilderdsl:GET /index/base_info/_search { "aggs": { "query_amount": { "sum": { "field": "num" } } }, "query": { "match": {原创 2020-11-18 15:45:41 · 12868 阅读 · 1 评论 -
ES 查询不存在的某个字段
更新了es数据的索引,查看下是否全部都有新的field.不存在GET index/_search{ "query": { "bool": { "must_not": { "exists":{"field":"filedX"} } }}}如果存在,使用must原创 2020-08-19 22:18:04 · 7132 阅读 · 0 评论 -
ES 多字段查询
一 序使用ES搜索相关的指标:Precision (查准率) - 尽可能返回较少的无关文档Recall (查全率) - 尽量返回较多的相关文档Ranking - 是否能够按照相关度进行排序二 单属性查询在 ES 中,Term 查询,对输入不做分词。所以除非是精准搜索不使用,大小写区别都查不出来。 通常就是使用match:(基于文本的分词,索引和搜索时都会进行分词)POST movies/_search{ "query": { "match": { ..原创 2020-08-19 14:43:42 · 14881 阅读 · 0 评论 -
Elasticsearch核心技术与实战学习笔记 59 | 常见的集群部署方式
一 序本文属于极客时间Elasticsearch核心技术与实战学习笔记系列。二 常见的集群部署方式2.1节点类型不同角色的节点Master eligible / Data / Ingest / Coordinating / Machine Learning在开发环境中,一个节点可承担多种角色在生产环境中根据数据量,写入和查询的吞吐量,选择适合的部署方式 建议设置单一角色的节点(dedicated node)2.2节点参数配置一个节点在默认情况下会同时扮演: mas...原创 2020-07-26 23:24:34 · 1304 阅读 · 0 评论 -
Elasticsearch核心技术与实战学习笔记 57 | 集群内部安全通信
一 序本文属于极客时间Elasticsearch核心技术与实战学习笔记系列。二为啥要加密通讯加密数据 - 避免数据抓包,敏感信息泄露 验证身份 - 避免 Imposter Node Data/Cluster State 为节点创建证书TLSTLS 协议要求 Trusted Certificate Authority(CA)签发的 X.509 的证书证书认证的不同级别Certificate – 节点加入需要使用相同 CA 签发的证书 Full Verification .原创 2020-07-26 10:51:28 · 373 阅读 · 0 评论 -
Elasticsearch核心技术与实战学习笔记 56 | 集群身份认证与用户鉴权
一 序本文属于极客时间Elasticsearch核心技术与实战学习笔记系列。本周扫盲了下pmp的的预习课,所以耽误了ES学习。二 安全问题ES 在默认安装后,不提供任何形式的安全防护 错误的配置信息导致公网可以访问 ES 集群 在elasticsearch.yml文件中,server.host被错误的配置为0.0.0.0 这个就不如MySQL那种严谨了。2.1数据安全性的基本需求 身份认证 鉴定用户是否合法 用户鉴权 指定哪个用户可以访问哪个索引...原创 2020-07-26 10:22:26 · 505 阅读 · 0 评论 -
Elasticsearch核心技术与实战学习笔记 55 第二部分总结回顾
一 序本文属于极客时间Elasticsearch核心技术与实战学习笔记系列。二 搜索与算分 结构化搜索与⾮结构化搜索 Term 查询(不分词)和基于全⽂本 Match (text类型会做分词,keyword不会做分词,转成term查询)搜索的区别 对于需要做精确匹配的字段,需要做聚合分析的字段,字段类型设置为 Keyword Query Context v.s Filter Context Filter Context 可以避免算分,并且..原创 2020-07-14 23:50:06 · 242 阅读 · 0 评论 -
Elasticsearch核心技术与实战学习笔记 54 | Elasticsearch数据建模最佳实践
一 序本文属于极客时间Elasticsearch核心技术与实战学习笔记系列。二建模建议2.1建模建议(一):如何处理关联关系Object : 优先考虑 Denormailzation Nested : 当数据包含多数值对象(一个电影有多个演员),同时有查询需求 Child/Parent: 关联文档更新非常频繁时(博客与评论)Kibana 目前暂不支持 nested 类型 和 parent /child 类型,在未来有可能会支持 如果需要使用 Kibana 进行数据分析,在数据建...原创 2020-07-13 10:11:05 · 466 阅读 · 0 评论 -
Elasticsearch核心技术与实战学习笔记 53 | Elasticsearch数据建模实例
一 序本文属于极客时间Elasticsearch核心技术与实战学习笔记系列。二 什么是数据建模数据建模(Data modeling),是创建数据模型的过程。数据模型是对真实世界进行抽象描述的一种工具和方法,实现对现实世界的映射 博客、作者、用户评论三个过程:概念模型 =》逻辑模型 =》数据模型(第三范式) 数据模型:结合具体的数据库,在满足业务读写性能等需求的前提下,确定最终的定义2.1数据建模:功能需求 + 性能需求 2.2 如何对字段进行...原创 2020-07-06 23:38:05 · 534 阅读 · 0 评论 -
Elasticsearch核心技术与实战学习笔记 52 | Ingest Pipeline & Painless Script
一 序本文属于极客时间Elasticsearch核心技术与实战学习笔记系列。二需求:修复与增强写入的数据 Tags 字段中,逗号分割的文本应该是数组,而不是一个字符串需求:后期需要对 Tags 进行 Aggregation 统计2.1Ingest NodeElasticsearch 5.0 后,引入的一种新的节点类型。默认配置下,每个节点都是 Ingest Node具有预处理数据的能力,可拦截 Index 或者 Bulck API 的请求 对数据进行转换,并重新...原创 2020-07-06 00:56:37 · 1200 阅读 · 0 评论 -
Elasticsearch核心技术与实战学习笔记 51 | Update By Query & Reindex API
一 序 本文属于极客时间Elasticsearch核心技术与实战学习笔记系列。二使用场景一般在以下几种情况时,我们需要重建索引:索引的 Mappings 发生变更:字段类型更改,分词器及字典更新 索引的 Setting 发生变更:索引的主分片数发生改变 集群内,集群间需要做数据迁移ElastiicSearch 的内置提供的 APIUpdate By Query : 在现有索引上重建 Reindex:在其他索引上重建索引2.1案例一为索引增加子字段改变 Mapping...原创 2020-07-05 14:38:12 · 523 阅读 · 0 评论 -
Elasticsearch核心技术与实战学习笔记 50 | 文档的父子关系
一 序本文属于极客时间Elasticsearch核心技术与实战学习笔记系列。二Parent / Child对象和 Nested 对象的局限性每次更新,需要重新索引整个对象(包括跟对象和嵌套对象)ES 提供了类似关系型数据库中 Join 的实现。使用 Join 数据类型实现,可以通过 Parent / Child 的关系,从而分离两个对象父文档和子文档是两个独立的文档 更新父文档无需重新索引整个子文档。子文档被新增,更改和删除也不会影响到父文档和其他子文档。2.1父子关系...原创 2020-07-05 00:30:09 · 317 阅读 · 0 评论 -
Elasticsearch核心技术与实战学习笔记 49 | 对象及Nested对象
一 序本文属于极客时间Elasticsearch核心技术与实战学习笔记系列。二数据的关联关系真实世界中有很多关系,软件也是对此一种抽象。2.1关系型数据库的范式化设计 范式化设计(Normalization)的主要目标是 “减少不必要的更新”副作用:一个完全范式化设计的数据库经常面临 “查询缓慢” 的问题数据库余额范式化,就需要 Join 越多的表范式化节省了储存空间,但是储存空间越来越便宜范式化简化了更新,但是数据 “读” 取操作可能越多2.2Denormal...原创 2020-06-28 23:12:41 · 469 阅读 · 0 评论 -
Elasticsearch核心技术与实战学习笔记
一 序本文属于极客时间Elasticsearch核心技术与实战学习笔记系列。二聚合的精准度问题2.1分布式系统的近似统计算法2.2Min 聚合分析的执行流程2.3Terms Aggregation 的返回值在 Terms Aggregation 的返回中有两个特殊的数值doc_count_error_upper_bound:被遗漏的 term 分桶,包含的文档,有可能的最大值 sum_other_doc_count: 处理返回结果 bucket 的 te...原创 2020-06-27 22:10:42 · 2578 阅读 · 1 评论 -
Elasticsearch核心技术与实战学习笔记 47 | 作用范围与排序
一 序本文属于极客时间Elasticsearch核心技术与实战学习笔记系列。二聚合的作用范围 ES 聚合分析的默认作用范围是 query 的查询结果集 同时 ES 还支持以下方式改变聚合的作用范围 Filter Post_Filter Global 2.1 demo filter的范围:下面的all_jobs是query的范围对所有员工工作进行分类。上面的older_person是对年龄做了filter(只...原创 2020-06-27 20:32:44 · 461 阅读 · 1 评论 -
Elasticsearch核心技术与实战学习笔记 46 | Pipeline聚合分析
一 序本文属于极客时间Elasticsearch核心技术与实战学习笔记系列。可以结合上一节课来理解,使用了做统计分析的聚合分析:英文为Aggregation,是es除搜索功能外提供的针对es数据做统计分析的功能。功能丰富:提供Bucket、Metric、Pipeline等多种分析方式,可以满足大部分的分析需求实时性高:所有的计算结果都是即时返回的,而hadoop等大数据系统一般都是T+1级别的例如聚合分析可以回答如下问题:请告诉我最近1周每天的订单成交量有多少?请告诉我最近1个..原创 2020-06-27 18:11:55 · 687 阅读 · 0 评论 -
Elasticsearch核心技术与实战学习笔记 45 | Bucket & Metric聚合分析及嵌套聚合
一 序本文属于极客时间Elasticsearch核心技术与实战学习笔记系列。2 Bucket & Metric AggregationMetric 一些系列的统计方法 Bucket 一组满足条件的文档2.1Aggregation 的语法Aggregation 属于 Search 的一部分。一般情况下,建议将其 Size 指定为 02.2 一个例子:工资统计左侧查询:分别是查询最大值、最小值、平均值。指定了函数与field.右侧返回的结果:hits是2...原创 2020-06-27 12:33:12 · 1365 阅读 · 0 评论 -
Elasticsearch核心技术与实战学习笔记 44 | 处理并发读写操作
一 序本文属于极客时间Elasticsearch核心技术与实战学习笔记系列。二并发控制的必要性两个 Web 程序同时更新某个文档,如果缺乏有效的并发,会导致更改的数据丢失悲观并发控制假设有变更冲突的可能,会对资源加锁,防止冲突。例如数据库行锁乐观并发控制假设突然是不会发生的,不会阻塞正在尝试的操作。如果数据在读写中被修改,更新将会失败。应用程序决定如何解决冲突,例如重试更新,使用新的数据,或者将错误报告给用户 ES 采用的乐观并发控制例子是举了销售商品扣减库存的。2...原创 2020-06-27 00:13:56 · 389 阅读 · 0 评论 -
Elasticsearch核心技术与实战学习笔记 43 | 分页与遍历:From, Size, Search After & Scroll API
一 序本文属于极客时间Elasticsearch核心技术与实战学习笔记系列。二 分页2.1From / Size默认情况下,查询按照相关度算分排序,返回前 10 条记录 容易理解的分页方案 From : 开始位置 Size:期望获取文档的总数 这里理解下:我只需要查询size条数据,而es则需要执行from+size条数据然后处理后返回。所以有很大的开销。2.2分布式系统中深度分页的问题 ES 天生就是分布式,查询信息,但是数据分别保存在多个分片,多台机器,E...原创 2020-06-26 23:20:34 · 502 阅读 · 0 评论 -
Elasticsearch核心技术与实战学习笔记 42 | 排序及Doc Values&Fielddata
一 序 本文属于极客时间Elasticsearch核心技术与实战学习笔记系列。二排序 ES 默认采用相关性算分对结果进行降序排序 可以通过设置 sorting 参数,自行设定排序 如果不指定_score, 算分为 null指定order_date 排序,所以打分是null.2.1多字段进行排序组合多个条件 优先考虑写在前面的排序 支持对相关性算分进行排序因为是全部查询,所以算分都是1.2.2对 Text 类型排序对Text字段进行排序,默认会报错...原创 2020-06-26 15:59:03 · 396 阅读 · 0 评论 -
Elasticsearch核心技术与实战学习笔记 41 | 剖析分布式查询及相关性算分
一 序 本文属于极客时间Elasticsearch核心技术与实战学习笔记系列。二分布式搜索的运行机制ES 的搜索,会分两阶段进行 第一阶段 - QUERY 第二阶段 - Fetch Query - then - Fetch2.1Query 阶段 用户发出搜索请求到 ES 节点。节点收到请求后,会以 Coordinating 节点的身份,在 6 个主副分片中随机选择 3 个分片,发送查询请求被选中的分片执行查询,进行排序。然后,每个分片都会返回 From + S...原创 2020-06-26 11:49:25 · 376 阅读 · 0 评论 -
Elasticsearch核心技术与实战学习笔记 40 | 分片及其生命周期
一 序本文属于极客时间Elasticsearch核心技术与实战学习笔记系列。二分片的内部原理什么是 ES 的分片ES 中最小的工作单元 / 是一个 Lucence 的 Index一些问题:为什么 ES 的搜索时近实时的(1 秒后被搜到) ES 如何保证在断电时数据也不会丢失 为甚删除文档,并不会立刻释放空间2.1倒排索引的不可变性倒排索引采用 Immutable Design, 一旦生成,不可更改不可变性,带来了的好处如下:不许考虑并发写文件的问题,避免了...原创 2020-06-25 23:35:57 · 533 阅读 · 0 评论 -
Elasticsearch核心技术与实战学习笔记 39 | 文档分布式存储
一 序本文属于极客时间Elasticsearch核心技术与实战学习笔记系列。二文档储存在分片上文档会存储在具体的某个主分片和副本分片上:例如文档 1,会储存在 P0 R0 分片上文档到分片的映射算法确保文档能均匀分布在所用分片上,充分利用硬件资源,避免部分机器空闲,部门机器繁忙 潜在的算法随机 / Round Robin. 当查询文档 1,分片数很多,需要多次查询才能查档文档 1 维护文档到分片的映射关系,当文档数据量大的时候,维护成本高 实时计算,通过文档 1,自动算出,需...原创 2020-06-25 19:32:12 · 295 阅读 · 0 评论 -
Elasticsearch核心技术与实战学习笔记 38 | 分片与集群的故障转移
一 序本文属于极客时间Elasticsearch核心技术与实战学习笔记系列。二Primary Shard - 提升系统存储容量分片是 ES 分布式储存的基石主分片 / 副本分片通过主分片,将数据分布在所有节点上Primary Shard , 可以将一份索引的数据,分散在多个 Data Node 上,实现储存的水平扩展 主分片(Primary Shard)数在索引创建时候指定,后续默认不能修改,如要修改,需重建索引2.1 Replica Shard - 提高数据可用性数据...原创 2020-06-25 16:42:37 · 842 阅读 · 0 评论 -
Elasticsearch核心技术与实战学习笔记 37 | 集群分布式模型及选主与脑裂问题
一 序 本文属于极客时间Elasticsearch核心技术与实战学习笔记系列。二分布式特性ES 的分布式架构带来的好处储存的水平扩容,支持 PB 级数据 提高系统的可用性,部分节点停止服务,整个集群的服务不受影响ES 的分布式架构不同的集群通过不同的名字来区分,默认名字 “es” 通过配置文件的修改,或者在命令行中 - E cluster.name=’geektime‘设定2.1节点节点是一个 ES 的实例其本质就是一个 JAVA 进程 一台机器可以运行多个 ...原创 2020-06-25 12:13:04 · 1188 阅读 · 0 评论 -
Elasticsearch核心技术与实战学习笔记 36 | 配置跨集群搜索
一 序本文属于极客时间Elasticsearch核心技术与实战学习笔记系列。二水平扩展的痛点单集群 - 当水平扩展时,节点数不能无限增加当集群的 meta 信息(节点,索引,集群状态)过多,会导致更新压力变大,单个 Active Master 会成为性能瓶颈,导致整个集群无法正常工作早期版本,通过 Tribe Node 可以实现多集群访问的需求,但是还存在一定的问题Tribe Node 会以 Client Node 的方式加入集群。集群中 Master 节点的任务变更需要 Tribe.原创 2020-06-20 22:22:47 · 336 阅读 · 0 评论 -
Elasticsearch核心技术与实战学习笔记 34 | Term&Phrase Suggester
一 序 本文属于极客时间Elasticsearch核心技术与实战学习笔记系列。二 什么是搜索建议现代的搜索引擎,一般都会提供 Suggest as you type 的功能 帮助用户在输入搜索的过程中,进行自动补全或者纠错。通过协助用户输入更加精准的关键词,提高后续搜索阶段文档匹配的程度 在 google 上搜索,一开始会自动补全。当输入到一定长度,如因为单词拼写错误无法补全,就会开始提示相似的词或者句子2.1 Elasticsearch Suggester API搜索引擎中类...原创 2020-06-20 16:08:32 · 799 阅读 · 0 评论 -
Elasticsearch核心技术与实战学习笔记 33 | 综合排序:Function Score Query优化算分
一 序本文属于极客时间Elasticsearch核心技术与实战学习笔记系列。在使用Elasticsearch进行全文搜索的时候,默认是使用BM25计算的_score字段进行降序排序的。ES 默认会以文档的相关度算分进行排序 可以通过制定一个或者多个字段进行排序 使用相关性算分(score)排序,不能满足某些特定条件 无法针对相关度,对排序实现更多的控制 二Function Score QueryFunction Score Query可以在查询结束后,对每一个匹配的文档进...原创 2020-06-18 19:16:29 · 924 阅读 · 0 评论 -
Elasticsearch核心技术与实战学习笔记 32 | 使用Search Template和Index Alias查询
一 序 本文属于极客时间Elasticsearch核心技术与实战学习笔记系列。这节课实际开发中比较有用,使用Search Template就可以将我们的一些搜索进行模板化,这样就能屏蔽底层的复杂的查询。对于使用者只传入一些参数就行。二Search Template - 解耦程序 & 搜索 DSLElasticsearch 的查询语句 对相关性算分 / 查询性能都至关重要在开发初期,虽然可以明确查询参数,但是往往还不能最终定义查询的 DSL 的具体结构 通...原创 2020-06-17 20:19:03 · 359 阅读 · 0 评论 -
Elasticsearch核心技术与实战学习笔记 30 | 多语言及中文分词与检索
一 序 本文属于极客时间Elasticsearch核心技术与实战学习笔记系列。二自然语言与查询 Recall当处理人类自然语言时,有些情况,尽管搜索和原文不完全匹配,但是希望搜到一些内容Quick brown fox 和 fast brown fox / Jumping fox 和 Jumped foxes一些可采取的优化归一化词元:清除变音符号,如 role 的的时候 也会匹配 role 抽取词根:清除单复数和时态的差异 包含同义词 拼写错误:拼写错误,或者同音异形词混合..原创 2020-06-01 00:00:59 · 759 阅读 · 0 评论 -
Elasticsearch核心技术与实战学习笔记 29 | 单字符串多字段查询:Multi Match
一 序 本文属于极客时间Elasticsearch核心技术与实战学习笔记系列。二单字符串多字段查询: Multi Match2.1 三种场景 最佳字段(Best Fields)当字段之间相互竞争,又相互关联。例如 title 和 body 这样的字段,评分来自最匹配字段多数字段(Most Fields)处理英文内容时:一种常见的手段是,在主字段(English Analyzer),抽取词干,加入同义词,以匹配更多的文档。相同的文本,加入子字段(Standard Anal...原创 2020-05-31 00:36:16 · 613 阅读 · 0 评论 -
Elasticsearch核心技术与实战学习笔记 第四章 28单字符串多字段查询:Dis Max Query
一 序 本文属于Elasticsearch核心技术与实战学习笔记系列。二单字符串查询属于常见的查询,搜索引擎只允许一个输入框查询。准备数据:PUT /blogs/_doc/1{ "title": "Quick brown rabbits", "body": "Brown rabbits are commonly seen."}PUT /blogs/_doc/2{ "title": "Keeping pets healthy", "body..原创 2020-05-30 19:30:09 · 401 阅读 · 0 评论 -
Elasticsearch核心技术与实战学习笔记 第四章 27 | Query&Filtering与多字符串多字段查询
一 序 本文属于极客时间Elasticsearch核心技术与实战学习笔记系列。二Query Context & Filter Context高级搜索的功能,支持多想文本输入,针对多个字段进行搜索搜索引擎一般也提供时间,价格等条件过滤在 ES 中,有 Query 和 Filter 两种 ContextQuery Context :相关性算分Filter Context :不需要算分(YES OR NO), 可以利用 Cache 获得更好的性能条件组合假设搜索一本电...原创 2020-05-30 01:08:46 · 413 阅读 · 0 评论 -
Elasticsearch核心技术与实战学习笔记 第四章 26 | 搜索的相关性算分
一 序 本文属于极客时间Elasticsearch核心技术与实战学习笔记系列。二相关性和相关性算分搜索的相关性算分,描述了一个文档和查询语句匹配的程度。ES 会对每个匹配查询条件的结构进行算分_score打分的本质是排序 , 需要把最符合用户需求的文档排在前面。ES 5 之前,默认的相关性打分采用 TF-IDF,现在采用 BM25 2.1 词频 TFTerm Frequency :检查词在一篇文档里出现的频率检查词出现的次数除以文档的总字数度量一条查询和结果文档...原创 2020-05-28 23:59:38 · 622 阅读 · 0 评论