
elk
xiangjai
这个作者很懒,什么都没留下…
展开
-
ES 31 - 内核知识点之fetch phase
fetch phbase工作流程(1)coordinate node构建完priority queue之后,就发送mget请求去所有shard上获取对应的document(2)各个shard将document返回给coordinate node(3)coordinate node将合并后的document结果返回给client客户端...原创 2020-10-23 10:31:00 · 247 阅读 · 0 评论 -
ES 30 - 内核知识点之query phase
内核知识点之query phase1. query phase2.replica shard如何提升搜索吞吐量1. query phase(1)搜索请求发送到某-个coordinate node,构构建一个priori ty queue,长度以paging操作from和size为准,默认为10(2) coordinate node将请求转发到所有shard,每个shard本地搜索,并构建一个本地的priority queue(3)各个shard将自己的pri ority q...原创 2020-10-23 10:18:21 · 358 阅读 · 0 评论 -
ES 29 - 内核知识点之Doc_Values
搜索的时候,要依靠倒排索引;排序的时候,需要依靠正排索引,看到每个document的每个field,然后进行排序,所谓的正排索引,其实就是doc values在建立索引的时候,一方面会建立正排索引,也就是doc values,以供排序、聚合、过滤等操作使用doc values是被保存到磁盘上的,此时如果内存足够,os会自动将其缓存在内存中,性能还会很高;如果内存不足够,os会将其写入磁盘上doc_value是什么绝大多数的fields在默认情况下是indexed,因此字段数据是可被搜索的。.原创 2020-10-23 09:28:08 · 672 阅读 · 0 评论 -
ES 28 - search timeout机制
例如GET bank/_search?timeout=1s结果{ "took" : 1, "timed_out" : false, "_shards" : { "total" : 1, "successful" : 1, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 1000, "relation" : "eq" },原创 2020-10-22 14:09:43 · 314 阅读 · 0 评论 -
ES 27 - Elasticsearch 写一致性原理以及quorum机制
写一致性原理以及quorum机制原创 2020-10-22 11:01:25 · 199 阅读 · 0 评论 -
ES 26 - Elasticsearch document数据路由以及document 查询内部原理图解揭秘
document数据路由1. 什么是document路由2. 路由算法 shard = hash(routing) % number_of_primary_shards3. 手动指定routing4 primary shard数量不可变的原因一旦index建立,primary shard是不允许修改的,但是replica shard可以随时修改。primary shard的数量确定之后不可更改,这是因为,数据路由时确定了shard的数值,后续primary shard数量变了的话,再根据路由原创 2020-10-22 10:23:38 · 509 阅读 · 0 评论 -
关于 Elasticsearch 内存占用及分配
Elasticsearch 和 Lucene 对内存使用情况:Elasticsearch 限制的内存大小是 JAVA 堆空间的大小,不包括Lucene 缓存倒排索引数据空间。Lucene 中的 倒排索引 segments 存储在文件中,为提高访问速度,都会把它加载到内存中,从而提高 Lucene 性能。所以建议至少留系统一半内存给Lucene。 Node Query Cache(负责缓存f ilter 查询结果),每个节点有一个,被所有 shard 共享,filter query查询结果要么...转载 2020-10-21 15:59:21 · 3548 阅读 · 0 评论 -
elasticsearch节点重启说明
elasticsearch节点重启说明1. 先暂停集群中该节点的shard自动均衡2. 设置完以后查看设置是否添加成功3. shutdown你要升级的节点4. 升级重启该节点,并确认该节点重新加入到了集群中5. 重复2-3步,升级重启其它要升级的节点6. 重启启动集群的shard均衡#7. 防止Elasticsearch立即开始数据恢复,直到集群中至少有八个(数据节点或主节点)节点存在。8. 观察所有分片分配情况1. 先暂停集群中该节点的shard自动均衡curl原创 2020-10-21 15:28:17 · 756 阅读 · 0 评论 -
ERROR: bootstrap checks failed memory locking requested for elasticsearch process but memory is not
官网说明:elasticsearch官网建议生产环境需要设置bootstrap.memory_lock: true官网的解释 是:发生系统swapping的时候ES节点的性能会非常差,也会影响节点的稳定性。所以要不惜一切代价来避免swapping。swapping会导致Java GC的周期延迟从毫秒级恶化到分钟,更严重的是会引起节点响应延迟甚至脱离集群。所以最好限制住elasticsearch占用的内存情况,可选少用swap错误内容:开启bootstrap.memory_lock: tr转载 2020-10-21 14:23:59 · 3286 阅读 · 2 评论 -
elasticsearch7.9.1配置说明 针对master、data和client节点说明
path.data和path.logs如果您使用.zip或.tar.gz存档,则data和logs 目录是子文件夹$ES_HOME。如果这些重要文件夹保留在其默认位置,则在将Elasticsearch升级到新版本时,存在删除它们的高风险。在生产使用中,您肯定会想要更改数据和日志文件夹的位置:path: logs: /var/log/elasticsearch data: /var/data/elasticsearch该RPM和Debian发行版已经使用自定义路径,data和log原创 2020-10-21 13:42:13 · 2780 阅读 · 0 评论 -
ES 01 - 初识Elasticsearch - 基础概念学习
目录1 Elasticsearch概述 1.1 Elasticsearch是什么 1.2 Elasticsearch的优点 1.3 Elasticsearch的相关产品 1.4 Elasticsearch的使用场景 2 Elasticsearch的功能概述 2.1 分布式的搜索引擎和数据分析引擎 2.2 全文检索 结构化检索 数据分析 2.3 海量数据的近实时处理 3 Elasticsearch的架构 3.1 gateway - 门户、网关 3.2 Lucen转载 2020-10-15 13:53:21 · 735 阅读 · 0 评论 -
ES 25 - Elasticsearch生产集群的配置建议
目录1 服务器的内存2 服务器的CPU3 服务器的磁盘4 集群的网络5 集群的节点个数6 JVM的参数设置7 集群的数据量8 总结在生产环境中, 要保证服务在各种极限情况下的稳定和高可用, 所以在部署ES集群时, 需要考虑服务器的内存、CPU、磁盘, 集群的网络、节点个数, 并且要优化JVM的各项参数. 首先从这些方面着手进行部署前的规划.1 服务器的内存ES非常消耗内存 —— 不是JVM用到的内存, 而是机器的物理内存, 因为ES在运行期间对JVM H.转载 2020-10-17 14:17:18 · 921 阅读 · 0 评论 -
ES 24 - Elasticsearch的脚本使用实践
目录1 关于脚本2 脚本使用的最佳实践2.1 创建脚本并存储2.2 脚本的缓存2.3 Script Field - 脚本字段参考资料本文以 ES 6.6.0 版本为例进行演示.1 关于脚本ES提供了脚本支持 —— 可以通过Groovy外置脚本(已过时)、内置painless脚本实现各种复杂操作.—— painless有轻便之意, 使用时直接在语法中调用即可, 无需外置, 也就是不支持通过外部文件存储painless脚本并调用的方法.// 向ES中插入一.转载 2020-10-17 14:17:15 · 1461 阅读 · 1 评论 -
ES 23 - Elasticsearch如何部分更新文档 (partial update的使用)
目录1 什么是partial update1.1 全量修改文档的原理1.2 修改指定field的思路1.3 partial update的优势1.4 partial update的使用2 通过脚本进行partial update操作2.1 内置painless脚本修改文档2.2 外置Groovy脚本修改文档2.3 内置painless脚本upsert文档2.4 外置Groovy脚本delete文档3 partial update的并发控制策略3.1 控制方式转载 2020-10-17 14:16:54 · 1612 阅读 · 0 评论 -
ES 22 - Elasticsearch的分页查询及其深分页问题 (deep paging)
目录1 分页查询方法2 分页查询的deep paging问题1 分页查询方法在GET请求中拼接from和size参数// 查询10条数据, 默认从第0条数据开始GET book_shop/_search?size=10// 从第0条数据开始(包括第0条), 查询10条数据GET book_shop/_search?from=0&size=10// 从第5条数据开始(包括第5条), 查询10条数据GET book_shop/_search?from=5&si.转载 2020-10-17 14:16:50 · 368 阅读 · 0 评论 -
ES 21 - 通过 Elasticsearch 实现聚合检索 (分组统计)
目录1 普通聚合分析1.1 直接聚合统计1.2 先检索, 再聚合1.3 扩展: fielddata和keyword的聚合比较2 嵌套聚合2.1 先分组, 再聚合统计2.2 先分组, 再统计, 最后排序2.3 先分组, 组内再分组, 然后统计、排序1 普通聚合分析1.1 直接聚合统计(1) 计算每个tag下的文档数量, 请求语法:GET book_shop/it_book/_search{ "size": 0, // 不显示命..转载 2020-10-17 14:16:18 · 7097 阅读 · 0 评论 -
ES 20 - 检索和过滤的区别 (query v.s filter)
目录1 filter与query示例1.1 准备测试数据1.2 搜索测试2 filter与query的区别2.1 相关度处理上的不同2.2 性能上的对比2.3 对比结论本文以 ES 6.6.0 版本为例进行演示.1 filter与query示例1.1 准备测试数据PUT website/_doc/1{ "title": "小白学ES01", "desc": "the first blog about es", "level":.转载 2020-10-16 10:10:50 · 237 阅读 · 0 评论 -
ES 19 - Elasticsearch中如何进行日期(数值)范围查询
目录1 范围查询的符号2 数值范围查询3 时间范围查询3.1 简单查询示例3.2 关于时间的数学表达式(date-math)3.3 关于时间的四舍五入4 日期格式化范围查询(format)5 时区范围查询(time_zone)参考资料1 范围查询的符号符号 含义 gte greater-than or equal to, 大于或等于 gt greater-than, 大于 lte less-than or equal to.转载 2020-10-16 10:10:19 · 5258 阅读 · 0 评论 -
ES 18 - Elasticsearch的高级检索语法 (包括term、prefix、wildcard、fuzzy、boost等)
目录Table of Contents1 term query - 索引词检索1.1 term query - 不分词检索1.2 terms query - in检索2 prefix query - 前缀检索3 wildcard query - 通配符检索4 regexp query - 正则检索5 fuzzy query - 纠错检索6 boost评分权重 - 控制文档的优先级别7 dis_max的用法 - best fields策略7.1 dis_max的提出转载 2020-10-16 10:09:53 · 3379 阅读 · 0 评论 -
ES 17 - 查询Elasticsearch中的数据 (基于DSL的查询, 包括validate、match、bool)
目录1 什么是DSL2 _validate - 校验查询语句是否合法3 match query - 匹配查询3.1 简单功能示例3.1.1 查询所有文档3.1.2 查询满足一定条件的文档3.1.3 分页查询文档3.1.4 指定返回的结果中包含的字段3.2 精确查询 - match_phrase3.2.1 精确匹配 - exact value3.2.2 全文搜索 - full text3.3 控制匹配规则 - operator3.4 指定命中的百分比 - m转载 2020-10-16 10:09:50 · 706 阅读 · 0 评论 -
ES 16 - 查询Elasticsearch中的数据 (基于_search API进行检索)
目录1 Search API的基本用法1.1 查询所有数据1.2 响应信息说明1.3 timeout超时机制1.4 查询多索引和多类型中的数据2 URI Search的用法2.1 GET请求携带参数查询2.2 URI Search的参数列表2.3 URI Search用法示例2.4 不指定field时的搜索原理说在前面: 本文的所有演示, 都是基于Elasticsearch 6.6.0进行的, 不同的版本可能存在API发生修改、不支持的情况, 还请注意..转载 2020-10-16 10:09:46 · 1292 阅读 · 1 评论 -
ES 15 - (底层原理) Elasticsearch写入索引数据的过程 以及优化写入过程
目录Table of Contents1 Lucene操作document的流程1.1 添加document的流程1.2 删除document的流程2 优化写入流程 - 实现近实时搜索2.1 流程的改进思路2.2 设置refresh的间隔3 优化写入流程 - 实现持久化变更3.1 文档持久化到磁盘的流程3.2 基于translog和commit point的数据恢复4 优化写入流程 - 实现海量segment文件的归并4.1 存在的问题4.2 merge操转载 2020-10-16 10:09:43 · 800 阅读 · 0 评论 -
ES 14 - (底层原理) Elasticsearch增删改查索引数据的过程
目录Table of Contents1 增删改document的流程1.1 协调节点 - Coordinating Node1.2 增删改document的流程2 查询document的流程参考资料1 增删改document的流程1.1 协调节点 - Coordinating NodeCoordinating Node(协调节点): 客户端随机选择一个Node用来发送操作请求, 这个节点就称为协调节点.由于每个Node都能计算出Document的存储位置, 所以由哪转载 2020-10-16 10:09:39 · 200 阅读 · 0 评论 -
ES 13 - 增删改查Elasticsearch中的索引数据 (CRUD)
目录1 创建document1.1 创建时手动指定id1.2 创建时自动生成id2 查看document2.1 根据id查询文档2.2 通过_source字段控制查询结果3 修改document3.1 全量替换document3.2 强制创建document4 删除document说在前面: 本文的所有演示, 都是基于Elasticsearch 6.6.0进行的, 不同的版本可能存在API发生修改、不支持的情况, 还请注意.1 创建document.转载 2020-10-16 10:09:34 · 342 阅读 · 0 评论 -
ES 12 - Elasticsearch的数据类型 (text、keyword、date、object、geo等)
目录Table of Contents1 核心数据类型1.1 字符串类型 - string(不再支持)1.1.1 文本类型 - text1.1.2 关键字类型 - keyword1.2 数字类型 - 8种1.3 日期类型 - date1.4 布尔类型 - boolean1.5 二进制型 - binary1.6 范围类型 - range2 复杂数据类型2.1 数组类型 - array2.2 对象类型 - object2.3 嵌套类型 - nested转载 2020-10-16 10:09:31 · 1670 阅读 · 0 评论 -
ES 11 - (底层原理) Elasticsearch内部如何处理不同type的数据
目录1 type的作用2 type的底层数据结构3 探究type的存储结构3.1 创建索引并配置映射3.2 添加数据3.3 查看存储结构4 关于type的最佳实践1 type的作用在Elasticsearch的索引(index)中, 通过标识元字段_type来区分不同的type, 所以我们可以把具有相同字段(field)的文档划分到同一个type下.==> 因而_type也称作映射类型, 即每个type都有各自的mapping.但即使是类似的数据, 也有可能转载 2020-10-16 10:09:27 · 411 阅读 · 0 评论 -
ES 10 - Elasticsearch的元字段 (_index、_type、_source、_routing等)
目录1 标识元字段1.1 _index - 文档所属的索引1.2 _uid - 包含_type和_id的复合字段1.3 _type - 文档的类型1.4 _id - 文档的id2 文档来源元字段2.1 _source - 文档原始JSON内容2.1.1 关闭_source功能2.1.2 查询时指定返回字段2.2 _size - _source字段占用的字节数3 索引元字段3.1 _all - 文档所有字段的值3.2 _field_names - 文档所有非转载 2020-10-15 18:05:13 · 1865 阅读 · 0 评论 -
ES 09 - 如何配置使用Elasticsearch的动态映射 (dynamic mapping)
目录1 动态映射(dynamic mapping)1.1 什么是动态映射1.2 体验动态映射1.3 搜索结果不一致的原因分析2 开启dynamic mapping动态映射策略2.1 约束策略2.2 策略示例3 定制dynamic mapping策略3.1 date_detection - 日期识别策略3.2 在type中自定义动态映射模板3.3 [过期]在index中自定义默认映射模板参考资料写在前面: 本文涉及到的演示以ES 6.6.0版本, 其.转载 2020-10-15 18:02:43 · 1597 阅读 · 0 评论 -
ES 08 - 配置Elasticsearch的映射 (mapping)
目录1 映射的相关概念1.1 什么是映射1.2 映射的组成1.3 元字段1.4 字段的类型2 如何配置mapping2.1 创建mapping2.2 更新mapping2.3 查看mapping1 映射的相关概念1.1 什么是映射(1) 映射(mapping): 定义index的元数据, 指定要索引并存储的文档的字段类型.也就是说映射决定了Elasticsearch在建立倒排索引、进行检索时对文档采取的相关策略, 如数字类型、日期类型、文本类型等等.转载 2020-10-15 18:01:00 · 1473 阅读 · 0 评论 -
ES 07 - 如何使用Elasticsearch的索引模板(index template)
博客转载 方面自己查看目录1 什么是索引模板1.1 索引模板中的内容1.2 索引模板的用途2 创建索引模板3 查看索引模板4 删除索引模板5 模板的使用建议5.1 一个index中不能有多个type5.2 设置_source = false5.3 设置_all = false5.4 设置dynamic = strict5.5 使用keyword类型参考资料1 什么是索引模板索引模板: 就是把已经创建好的某个索引的参数设置(setting.转载 2020-10-15 17:59:31 · 3604 阅读 · 0 评论 -
ES 06 - Elasticsearch如何定制分词器 (自定义分词策略)
目录1 索引的分析1.1 分析器的组成1.2 倒排索引的核心原理-normalization2 ES的默认分词器3 修改分词器4 定制分词器4.1 向索引中添加自定义的分词器4.2 测试自定义分析器4.3 向映射中添加自定义的分词器5 常见问题1 索引的分析索引分析: 就是把输入的文本块按照一定的策略进行分解, 并建立倒排索引的过程. 在Lucene的架构中, 这个过程由分析器(analyzer)完成.1.1 分析器的组成① 字符过滤器(char.转载 2020-10-15 17:55:06 · 2126 阅读 · 0 评论 -
ES 05 - 增删改查、打开、关闭Elasticsearch的索引
博客转载 方面自己查看目录1 创建index(配置mapping[映射]) 2 查看index 3 修改index 4 删除index 5 打开/关闭index 6 常见问题及解决方法 版权声明Elasticsearch中的index相当于RDBMS(关系型数据库, 比如MySQL)中的DataBase.本篇文章通过Kibana插件, 演示了ES的基础语法: 对ES中的index进行CRUD(增删改查)以及关闭、开启操作.阅读须知:在ES 6.x之前的版本中, 每.转载 2020-10-15 17:52:57 · 1922 阅读 · 0 评论 -
ES 04 - Elasticsearch查询索引文档的6种方法
博客转自 方面自己查看目录Table of Contents1 Query String Search(查询串检索)2 Query DSL(ES特定语法检索)3 Query Filter(过滤检索)4 Full Text Search(全文检索)5 Phrase Search(短语检索)6 Highlight Search(高亮检索)1 Query String Search(查询串检索)这种方法通过HTTP请求的Query String携带查询参数, 因此..转载 2020-10-15 17:50:24 · 3421 阅读 · 0 评论 -
ES 03 - 通过Kibana插件操作ES中的索引文档 (CRUD操作)
目录Table of Contents1 创建、删除索引1.1 创建索引2.2 删除索引2 document的结构3 添加文档4 查询文档5 修改文档5.1 替换文档5.2 更新文档6 删除文档向ES中添加文档时, ES会根据文档中各个字段的类型, 自动推测并创建映射(mapping), 这是比Solr灵活的地方;这在大部分情况下是可用的, 但生产环境中不建议如此使用: 应该根据业务需求定制mapping映射. 关于定制mapping, 请参考后续文.转载 2020-10-15 17:38:34 · 298 阅读 · 0 评论 -
ES 02 - 通过Kibana查看Elasticsearch集群的健康状态、节点和索引个数
目录1 检查集群的健康状况2 查看集群中的节点个数3 查看集群中的索引在本篇文章之前, 需要完成:① 启动Elasticsearch服务, 至少启动一个节点, 参考博主文章ES 02 - Elasticsearch单机服务的部署 (包括常见问题的解决), 部署Elasticsearch服务;② 启动Kibana, 参考博主文章ES 04 - 安装Kibana插件(6.6.0版本), 安装并启动Kibana;③ 通过浏览器访问Kibana...转载 2020-10-15 17:31:48 · 4132 阅读 · 0 评论 -
FileBeat+ELK+Kafka部署
JKD1.8.0_171elasticsearch6.5.4logstash6.5.4kibana6.5.4kafka2.11-2.1.1filebeat-6.5.4-x86_64.rpmelk下载地址https://www.elastic.co/downloads/past-releases机器10.100.1.52 安装logstash和filebeatrpm -ivh filebeat-6.5.4-x86_64.rpm ...原创 2020-10-12 18:12:44 · 457 阅读 · 0 评论