
Elasticsearch
文章平均质量分 94
武子康
Hi, I'm Zikang / 武子康
好奇心驱动的探索者 | INTJ / INFJ
我热爱探索一切值得深究的事物。对技术、成长、效率、认知、人生有着持续的好奇心和行动力。
坚信「飞轮效应」,相信每一次微小的积累,终将带来深远的改变。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
大数据-191 Elasticsearch - ES 集群模式 配置启动 规划调优
调整 _source 字段,source字段用于存储原数的doc数据,对于部分不需要存储的数据,可以通过index excludes过滤,或者将source禁用,一般用于索引和数据分离,这样可以降低I/O的压力,不过业务场景中大多数都不会禁用Source。自动生成DocID,通过Elasticsearch写入流程可以看出,如果写入Doc时外部指定了id,那么Elasticsearch会先尝试读取原来的Doc的版本号,以判断是否需要更新数据,这个操作涉及到了磁盘,如果是自动生成DocID则可以避免这个问题。原创 2024-10-26 09:38:13 · 4369 阅读 · 0 评论 -
大数据-190 Elasticsearch - ELK 日志分析实战 - 配置启动 Filebeat & Logstash
如果你在这里遇到了 runtime-cgo-pthread-create-failed-operation-not-permitted 的错误,那你可以尝试将 FileBeat 的版本进行提升,我这里就遇到了,所以后续进行版本提升。我这里版本一点点的往上尝试,大致猜测是操作系统的版本可能新一些,所以原来的Go的库无法支持新的操作系统了(猜测的)。根据刚才的操作,我已经配置好了路劲等内容,且修改了 filebeat.yml 的配置文件内容。我们刷新Nginx的页面,提供一些数据出来。原创 2024-10-25 09:02:50 · 4707 阅读 · 0 评论 -
大数据-189 Elasticsearch - ELK 日志分析实战 - 环境配置启动 Nginx、ZK、Kafka、ES、Kibana
Kibana 是一个开源的数据可视化和探索工具,专门为 Elasticsearch 设计,用来帮助用户对存储在 Elasticsearch 中的数据进行实时分析、可视化和管理。Kafka 最初是为了处理 LinkedIn 内部的大规模数据流而设计的,现在已成为各类企业用于处理实时数据流的重要工具。它能够快速存储、搜索和分析大量数据,广泛应用于日志处理、全文搜索、数据分析等场景。修改日志的格式(方便后续的Logstash进行解析,虽然Logstash可以通过正则的方式来实现字段的提取,但是效率并不高)。原创 2024-10-25 08:53:15 · 3856 阅读 · 0 评论 -
大数据-188 Elasticsearch - ELK 家族 Logstash Output 插件
Filter 插件负责对传入的数据进行处理和转换,它位于 Logstash 管道的中间环节,接收来自输入 (Input) 的数据,进行解析、增强、变换,最终将数据传递给输出 (Output)。这种日志是非格式化的,通常,我们获取到日志后,还要使用MapReduce或者Spark做一下数据清晰的操作,就是将非格式化的日志进行格式化操作。所以可以使用Logstash的grok功能,将Nginx的非格式化采集成格式化的数据。在清晰的时候,如果日志的数据量比较大,那么也是需要花费一些时间的。原创 2024-10-24 09:16:50 · 4882 阅读 · 0 评论 -
大数据-187 Elasticsearch - ELK 家族 Logstash Filter 插件 使用详解
Filter 插件负责对传入的数据进行处理和转换,它位于 Logstash 管道的中间环节,接收来自输入 (Input) 的数据,进行解析、增强、变换,最终将数据传递给输出 (Output)。这种日志是非格式化的,通常,我们获取到日志后,还要使用MapReduce或者Spark做一下数据清晰的操作,就是将非格式化的日志进行格式化操作。所以可以使用Logstash的grok功能,将Nginx的非格式化采集成格式化的数据。在清晰的时候,如果日志的数据量比较大,那么也是需要花费一些时间的。原创 2024-10-24 09:05:42 · 5187 阅读 · 0 评论 -
大数据-186 Elasticsearch - ELK 家族 Logstash Input插件 JDBC & syslog
Logstash 的 JDBC 和 Syslog 是两种不同的 Input 插件,它们分别用于从数据库和 syslog 日志中收集数据。在详细介绍之前,首先明确一下它们各自的用途和特点:JDBC 插件:用于从数据库(如 MySQL、PostgreSQL、SQL Server 等)中提取数据。它利用 JDBC 驱动连接数据库并运行 SQL 查询,收集查询结果并将其输入到 Logstash 进行处理和发送。Syslog 插件:用于从 Syslog(系统日志)服务中收集日志数据。原创 2024-10-23 09:29:01 · 4249 阅读 · 0 评论 -
大数据-185 Elasticsearch - ELK 家族 Logstash 安装配置 Input 插件-stdin &stdout
Logstash 是一个开源的服务器端数据处理管道工具,主要用于实时收集、过滤、转换和输出数据。它可以从多种数据源(如日志文件、数据库、消息队列等)中收集数据,并经过自定义的过滤处理后,输出到目标系统(如 Elasticsearch、数据库或文件等)。作为 Elastic Stack(也称为 ELK Stack)的一部分,Logstash 通常与 Elasticsearch 和 Kibana 配合使用,用于实时日志处理、分析和可视化。原创 2024-10-23 09:18:33 · 4734 阅读 · 0 评论 -
大数据-184 Elasticsearch - 原理剖析 - DocValues 机制原理 压缩与禁用
Doc Values 是 Elasticsearch 中的重要功能,旨在提高排序、聚合和过滤的效率。通过列式存储,它允许 Elasticsearch 快速访问相关的字段值,而无需加载整个文档。正确地使用 Doc Values 可以显著提高查询性能,特别是在处理大规模数据时。原创 2024-10-22 10:44:39 · 4720 阅读 · 0 评论 -
大数据-183 Elasticsearch - 原理剖析 - 并发冲突处理机制剖析、分布式数据一致性剖析
如果是多线程操作,就可能有多个线程并发的去执行上述的3步骤流程,假如此时有两个人都来读取商品数据,两个线程并发的服务于两个人,同时在进行商品库存数据的修改,假设库存为100件,正确的情况:线程A将库存-1,设置为99件,线程B读取99再-1,设置为98件。比如每条文档中都有一个version字段,新建文档后为1,每次修改都进行累加,线程A和B都拿到version为1,等写入时会和ES中的版本号进行比较,如果相等则写入成功,失败则重新读取数据再-1,再进行对比,如果相等则写入成功。原创 2024-10-22 09:33:55 · 4943 阅读 · 0 评论 -
大数据-182 Elasticsearch - 原理剖析 数据结构-倒排索引、SkipList 跳表
倒排索引是全文检索的根基,理解了倒排索引之后才能算是入门了全文检索的领域,倒排索引的概念很简单,也很好理解。倒排索引由两部分组成,所有独立的词列表称为索引,词对应的一系列表统称为倒排表。(《信息检索》)索引表,叫 Terms Dictionary,是由于一系列的Term组成的倒排表,称 Posting List,即是由所有的Term对应的Postings组成的假设某个索引字段中有sex、address字段,检索条件为:sex=‘female’ and address=‘北京’原创 2024-10-21 12:16:53 · 4145 阅读 · 0 评论 -
大数据-181 Elasticsearch - 原理剖析 索引文档存储段合并、存储文件详解
Elasticsearch通过在后台进行段合并来解决这个问题,小的段合并到大的段,然后这些大的段被合并到更大的段,段合并的时候会将那些旧的已删除文档从文件系统中清除,被删除的文档(或被更新文档的旧版本)不会拷贝到新的大段中。合并大的段需要消耗大量的 I/O和CPU资源,如果任其发展会影响搜索性能,Elasticsearch在默认情况下会对合并流程进行资源限制,所以搜索仍然有足够的资源很好的执行。对于写入量较大,磁盘转速较高,甚至使用SSD盘的服务器来说,这个限速是明显过低的。原创 2024-10-21 08:59:32 · 4717 阅读 · 0 评论 -
大数据-180 Elasticsearch - 原理剖析 索引写入与近实时搜索
众所周知,Elasticsearch存储的基本单元是Shard,ES中的一个Index可能分为多个Shard,事实上每个Shard都是一个Lucence的Index,并且每个LucenceIndex由多个Segment组成,每个Segment事实上是一些倒排索引的集合,每次创建一个新的Document,都会归属于一个新的Segment,而不会去修改原来的Segment。如果每次一条数据写入内存后立即写到硬盘上,由于写入的数据肯定是离散的,因此写入磁盘的操作也就是随机写入了。请在决定前知晓这个特性。原创 2024-10-20 21:28:25 · 3927 阅读 · 0 评论 -
大数据-179 Elasticsearch - 原理剖析 倒排索引与读写流程
倒排索引是 Elasticsearch 实现高效全文搜索的基础。它通过构建基于词项的文档ID映射,使得搜索引擎可以快速找到包含某个词项的文档,并进行相关性计算和排序。倒排索引的原理结合了分词、标准化处理和高效的数据结构设计,确保了 Elasticsearch 在处理大规模数据时,仍然能够提供快速、准确的搜索结果。原创 2024-10-20 21:21:25 · 5365 阅读 · 2 评论 -
大数据-178 Elasticsearch Query - Java API 索引操作 & 文档操作
通过 Java API,可以向特定索引插入单个文档,并指定文档的 ID(如果不指定,Elasticsearch 会自动生成一个 ID)。获取文档:Java API 可以根据文档 ID 从索引中获取单个文档,返回的结果会包含文档的元数据信息,如 _id、_index、_version 等。获取索引信息:通过 Java API 可以获取现有索引的详细信息,例如索引的元数据、字段映射、分片数量、副本数量等。需要小心的是,删除索引会清除该索引中的所有数据,操作不可逆,因此通常建议在执行此操作前进行备份。原创 2024-10-18 10:13:15 · 6836 阅读 · 3 评论 -
大数据-177 Elasticsearch Query DSL - 聚合分析 &指标聚合 & 桶聚合
Elasticsearch 的聚合分析是一种强大的功能,允许用户在查询数据的同时对其进行统计分析、分组计算和排序,类似于 SQL 中的 GROUP BY 和 COUNT() 等操作。聚合分析包括两个主要类别:指标聚合和桶聚合。在聚合的基础上,你还可以进行嵌套聚合,将多个聚合组合在一起,从而构建复杂的分析查询。聚合分析是数据库中的重要的功能特性,完成对一个查询的数据集中数据的聚合计算,如:找出某个字段(或计算表达式的结果)的最大值、最小值、计算和、平均值等。原创 2024-10-18 09:49:15 · 4304 阅读 · 0 评论 -
大数据-176 Elasticsearch Query DSL - Filter DSL & 查询排序 & 结果高亮 & 批量操作
Filter DSL:过滤器查询语言)Filter DSL 是 Elasticsearch 提供的一种用于构建过滤查询的方式。与 query 语句不同,过滤器不会计算与文档相关的评分,而是简单地筛选出符合条件的文档。这通常用于只关心是否匹配而不考虑匹配度的情况,如日志分析、数据分类等场景。Filter 查询更高效,适合不需要计算相关性的操作。原创 2024-10-17 09:40:18 · 4565 阅读 · 0 评论 -
大数据-175 Elasticsearch Query DSL - 词条级搜索(term-level queries)& 复合搜索(compound query)
regexp允许使用正则表达式进行term查询,注意regexp如果使用不正确,会给服务器带来很严重的性能压力,比如*开头的查询,将会匹配所有倒排索引中的关键字,这几乎是全表扫描,因此如果可以的话,最好使用正则前,加上匹配的前缀。可以使用term-level queries根据结构化数据中的精确值查找文档。查询指定字段不为空的文档,相当于SQL中的 column is not null。terms 查询用于查询指定字段包含某些词项的文档。term查询用于查询指定字段包含某个词项的文档。原创 2024-10-17 09:29:33 · 2971 阅读 · 0 评论 -
大数据-174 Elasticsearch Query DSL - 全文检索 full-text query 匹配、短语、多字段 详细操作
全文搜索能够搜索已分析的文本字段,如电子邮件正文、商品描述,使用索引期间应用于字段的同一分词处理查询字符串,全文搜索的分类很多,有如下的这么几种。如果你需要在多个字段上进行文本搜索,可用multi_match,multi_match在match的基础上支持对多个字段进行文本查询。我们可以看到,不仅查到了小米电视、还查询到了小米手机。这不是我们要的结果。该查询与match类似,但是match需要指定字段名,query_string是在所有字段中搜索,范围更广泛。原创 2024-10-16 14:19:40 · 5945 阅读 · 0 评论 -
大数据-173 Elasticsearch 索引操作 增删改查 详细 JSON 操作
索引创建之后,等于有了关系型数据库中的Database,Elasticsearch7.x取消了索引type类型的设置,不允许指定类型,默认为_doc,但字段仍然是有的,我们需要设置字段的约束信息,叫做字段映射(mapping)主要注意的是:修改映射只能是增加字段的操作,其他的更改只能删除索引重新建立索引来实现。文档,即索引库中的数据,会根据规则创建索引,将用来搜索,可以类比做数据库中的一行数据。实际上创建索引和映射是可以放到一起来做的, 在创建索引的同时,直接指定映射。原创 2024-10-16 14:10:11 · 3859 阅读 · 0 评论 -
大数据-172 Elasticsearch 索引操作 与 IK 分词器 自定义停用词 Nginx 服务
有些词在文本中出现的频率非常高,但对本文的语义会产生很大的影响,例如:呢、了、啊等等,英语中也有类似于 a 、the、of 等等。settings:就是索引库设置,其中可以索引库的各种属性,比如分片数、副本数等。目前我们不设置,先默认即可。在实际环境中,有很多时候并不能够准确的理解我们断词断句,有时候有些词我们想要它拆分,有些词我们希望它不拆分。停用词经常会过滤掉,不会被索引,在检索过程中,如果用户的查询词中含有停用词,系统会自动过滤掉。执行结果如下图所示:(这里有不存在的索引,所以404了)原创 2024-10-15 09:11:17 · 4154 阅读 · 0 评论 -
大数据-171 Elasticsearch ES-Head 与 Kibana 配置 使用 测试
Kibana是一个基于Node.js的Elasticsearch索引库数据统计工具,可以利用Elasticsearch的聚合功能,生成各种图标,如柱形图、线状图、饼图等。而且还提供了操作Elasticsearch索引数据的控制台,并且提供了一定的API提示,非常有利于我们学习Elasticsearch的语法。它是一个界面化的集群操作和管理工具,可以对集群进行傻瓜式操作,你可以通过把插件把它集成到ES。为了我们测试和学习的方便,我们要安装一个叫:Elasticsearch Head插件。原创 2024-10-15 08:57:47 · 3594 阅读 · 0 评论 -
大数据-170 Elasticsearch 云服务器三节点集群搭建 测试运行
(注意:network部分是比较容易出问题的,如果你出了问题,必须绑定的网卡不对,导致IP的问题等,那你需要向我这样配置,来指明绑定的地址等内容)现在我们把三台机器都安装上ES的环境,你可以每台都下载,或者使用同步工具来同步。此外和上节一样,如果你没修改操作系统的限制,如果你启动报错的话,请回到上节,修改 limits 等参数配置。三台机器都要设置对了,我的账号和密码是一样的,都是 es_server。三台机器都要执行,建立文件夹,这里是 日志、数据等内容。h121是主机,这里是之前下载的。原创 2024-10-14 09:49:27 · 3520 阅读 · 0 评论 -
大数据-169 Elasticsearch 索引使用 与 架构概念 增删改查
Elasticsearch是面向文档的(document oriented)的,这意味着它可以存储整个对象或者文档(document)。然后它不仅仅是存储,还会索引(Index)每个文档的内容使之可以被搜索。在Elasticsearch中,你可以对文档(而非成行成列的数据)进行索引、搜索、排序、过滤。Elasticsearch是基于Lucene的全文检索引擎,本质也会存储和检索数据,ES中有很多概念与MySQL概念类型,可以按照关系型的数据库的经验去理解。原创 2024-10-14 09:44:12 · 3419 阅读 · 0 评论 -
大数据-168 Elasticsearch 单机云服务器部署运行 详细流程
Elasticsearch是一个分布式全文搜索引擎,支持单节点模式(Single-Node Model)和集群模式(Cluster Model)部署,一般来说,小公司的业务场景往往使用Single-Node Mode部署即可。我们需要根据实际的情况进行修改,默认都是1G,单机1G内存,启动会占用700M+,安装Kibana之后,基本就无法运行了,内存超出物理内存,也会无法启动。ES因为需要大量的创建索引文件,需要大量的打开系统的文件,所以我们需要解除Linux当中打开的最大数目限制,不然ES启动就会报错。原创 2024-10-13 17:10:13 · 4081 阅读 · 0 评论 -
大数据-167 ELK Elasticsearch 详细介绍 特点 分片 查询
ELK其实并不是一款软件,而是一整套解决方案,是三个软件产品的首字母缩写(Elasticsearch ES),Logstash、Kibana。这三款都是开源软件,配合使用,而先后又归于 Elasttic.co 公司名下,简称 ELK 协议栈。Elasticsearch简称为ES,ES是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据,本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。原创 2024-10-13 17:01:06 · 3088 阅读 · 0 评论