ES
文章平均质量分 82
es
宝哥大数据
大数据、机器学习、深度学习
展开
-
ES: update by query
es update by query原创 2022-10-15 09:30:11 · 7285 阅读 · 1 评论 -
ES 问题 拼音 en ou等词被拆分,导致搜不到
es 拼音原创 2022-08-25 14:34:26 · 803 阅读 · 0 评论 -
es7.9.3安装&kibana&同义词&ik分词器&拼音
一、es安装1.1、配置config/elasticsearch.yml# 打开节点名称node.name: chb2# 这里的node-1为node-name配置的值cluster.initial_master_nodes:["chb2"]# 外部ip访问elasticsearchnetwork.host: 0.0.0.01.2、Ps:常见报错[1]: max virtual memory areas vm.max_map_count [65530] is too low, incr原创 2022-02-27 11:27:19 · 2614 阅读 · 0 评论 -
Elasticsearch 源码解析与优化实战(张超)----笔记
作者是基于 6.1.2, 本人在他的基础上梳理ES7.9.3, 可能部分章节未更新到,以及有问题的地方,请指正,谢谢! 第1章 走进Elasticsearch 第2章 准备编译和调试环境 第3章:集群启动流程 第4章:节点启动和关闭 第5章:选主流程 第6章:数据模型 第7章:写流程 第8章:GET流程 第9章:Search流程 第10章:索引恢复流程分析 第11章:gateway 模块分析 第12章:allocation模型分析 第13章:Snapsho原创 2021-10-24 09:13:04 · 5524 阅读 · 0 评论 -
《Elasticsearch 源码解析与优化实战》第2章 准备编译和调试环境
第2章 准备编译和调试环境2.1 编译源码2.1.1 准备JDK和GradleElasticsearch是Java语言编写的。运行和编译Elasticsearch时,对JDK版本的选择请参考手册,地址:https://www.elastic.co/guide/en/elasticsearch/reference/current/_installation.html。推荐使用Oracle的JDK版本。本书使用的JDK版本为1.8.0_121。JDK的安装方式不在这里讨论,请读者参考Oracle官方网站。转载 2021-10-14 08:03:32 · 742 阅读 · 0 评论 -
《Elasticsearch 源码解析与优化实战》第1章 走进Elasticsearch
文章目录一、第1章 走进Elasticsearch1.1、基本概念和原理1.1.1、索引结构1.1.2、分片(shard)1.1.3、动态更新索引1.1.4、近实时搜索1.1.5、段合并1.2、集群内部原理1.2.1、集群节点角色关注我的公众号【宝哥大数据】,更多干货。。。一、第1章 走进Elasticsearch1.1、基本概念和原理Elasticsearch是实时的分布式搜索分析引擎,内部使用Lucene做索引与搜索。何谓实时?新增到 ES 中的数据在1秒后就可以被检索到,这种新增数据对搜索的可原创 2021-10-11 23:04:10 · 1593 阅读 · 0 评论 -
《Elasticsearch 源码解析与优化实战》第4章:节点启动和关闭
文章目录简介启动流程做了什么启动流程分析启动脚本解析命令行参数和配置文件加载安全配置检查内部环境检测外部环境1\. 堆大小检查2\. 文件描述符检查3\. 内存锁定检查4\. 最大线程数检查5\. 最大虚拟内存检查6\. 最大文件大小检查7\. 虚拟内存区域最大数量检查8\. JVM Client模式检查9\. 串行收集检查10\. 系统调用过滤器检查11\. OnError与OnOutOfMemoryError检查12\. Early-access检查13\. G1GC检查启动内部模块启动keepaliv转载 2021-10-11 09:23:57 · 618 阅读 · 0 评论 -
《Elasticsearch 源码解析与优化实战》第3章:集群启动流程
文章目录简介选举主节点选举集群元信息Allocation 过程选主分片选副分片Index recovery主分片recovery副分片recovery1. Synid方式2. SequenceNumber方式节点下线主节点下线数据节点下线集群启动日志小结简介让我们从启动流程开始,先在宏观上看看整个集群是如何启动的,集群状态如何从 Red 变成 Green,不涉及代码,然后分析其他模块的流程。本书中,集群启动过程指集群完全重启时的启动过程,期间要经历选举主节点、主分片、数据恢复等重要阶段,理解其中原理和转载 2021-10-10 11:19:28 · 847 阅读 · 0 评论 -
《Elasticsearch 源码解析与优化实战》第21章:综合应用实践
文章目录简介集群层规划集群规模单节点还是多节点部署移除节点独立部署主节点节点层控制线程池的队列大小为系统cache保留一半物理内存系统层关闭swap配置Linux OOM Killer优化内核参数索引层使用全局模板索引轮转避免热索引分片不均副本数选择Force MergeShrink Indexclose索引延迟分配分片小心地使用fielddata客户端使用REST API而非Java API注意429状态码curl的HEAD请求了解你的搜索计划为读写请求设置比较长的超时时间读写避免搜索操作返回巨大的结果集转载 2021-10-09 08:47:04 · 653 阅读 · 0 评论 -
《Elasticsearch 源码解析与优化实战》第13章:Snapshot 模块分析
文章目录简介仓库共享文件系统快照创建快照获取快照信息快照status取消、删除快照和恢复操作从快照恢复部分恢复恢复过程中更改索引设置监控恢复进度创建快照的实现原理Lucene文件格式简介1.定义2.分段3.文件命名规则4.文件扩展名摘要协调节点流程主节点流程数据节点流程1. 对ClusterState的处理2. 对一个特定分片的快照实现删除快照实现原理协调节点流程主节点流程1. 提交集群任务2. 快照删除3. 数据节点的取消过程思考与总结关注我的公众号【宝哥大数据】,更多干货简介快照模块是ES备份、迁移转载 2021-10-08 16:48:50 · 775 阅读 · 1 评论 -
《Elasticsearch 源码解析与优化实战》第15章:Transport模块分析
文章目录简介配置信息传输模块配置通用网络配置Transport 总体架构网络层1. 网络模块初始化2. Netty4Transport3. Netty4HttpServerTransport服务层1. 连接到节点2.发送请求3. 定义对Response的处理4. 定义对请求的处理REST解析和处理RPC实现RPC的注册和映射1. ActionModule类中的注册2. TransportService类中的注册根据Action获取处理类1. REST请求触发2. TcpTransport收到RPC请求思考与转载 2021-10-08 15:59:51 · 911 阅读 · 0 评论 -
《Elasticsearch 源码解析与优化实战》第14章:Cluster模块分析
Cluster模块封装了在集群层面要执行的任务。例如,把分片分配给节点属于集群层面的工作,在节点间迁移分片以保持数据均衡,集群健康、集群级元信息管理,以及节点管理都属于集群层面工作。本章重点论述集群任务的执行,以及集群状态的下发过程。分片分配和节点管理等单独讨论更合适一-些。在_ cluster/health API 中看到的number_of_pending_tasks (任务数量)就是等待执行的“集群任务”的任务数量,通过_ cat/pending_tasks API可以列出具体的任务列表。本章介绍主转载 2021-10-08 15:03:48 · 735 阅读 · 0 评论 -
《Elasticsearch 源码解析与优化实战》第12章:allocation模型分析
简介本文主要分析allocation 模块的结构和原理,然后以集群启动过程为例分析 allocation 模块的工作过程什么是 allocation分片分配就是把一个分片指派到集群中某个节点的过程。分配决策由主节点完成,分配决策包含两方面:哪些分片应该分配给哪些节点哪个分片作为主分片,哪些作为副本分片对于新建索引和已有索引, 分片分配过程也不尽相同,不过不管哪种场景,ElasticSearch都通过两个基础组件完成工作:allocators [ˈæləʊkeɪtə(r)] 分配者和decid转载 2021-10-08 11:04:28 · 671 阅读 · 0 评论 -
《Elasticsearch 源码解析与优化实战》第11章:gateway 模块分析
文章目录一、gateway 模块分析1.1、简介1.2、元数据1.3、元数据的持久化1.4、元数据的恢复1.5、元数据恢复流程分析1.5.1、选举集群级和索引级别的元数据1.6、触发allocation1.7、思考关注我的公众号【宝哥大数据】,更多干货一、gateway 模块分析1.1、简介gateway 模块负责集群元信息的存储和集群重启时的恢复。1.2、元数据ES 中存储的数据有以下几种:state 元数据信息index Lucene 生成的索引文件translog 事务日志tra转载 2021-09-30 00:38:26 · 1387 阅读 · 0 评论 -
《Elasticsearch 源码解析与优化实战》第16章:ThreadPool模块分析
文章目录一、简介二、线程池类型2.1、fixed2.2、scaling2.3、direct2.4、fixed_auto_queue_size三、处理器设置四、查看线程池4.1、cat thread pool4.2、nodes info4.3、nodes stats4.4、nodes hot threads4.5、Java 的线程池结构五、ES的线程池实现5.1、ThreadPool 类结构与初始化5.2、fixed类型线程池构建过程5.3、scaling类型线程池构建过程5.4、direct类型线程池构建过转载 2021-09-30 00:01:45 · 1462 阅读 · 0 评论 -
《Elasticsearch 源码解析与优化实战》第18章:写入速度优化
文章目录一、 简介二、优化项2.1、Translog flush2.2、Refresh_interval2.3、Segment merge2.4、Indexing Buffer2.5、Bulk 线程池和队列大小2.6、磁盘间的任务均衡2.7、节点间的任务均衡2.8、索引过程调整和优化2.8.1、自动生成 doc ID2.8.2、调整字段 Mappings2.8.2.1、字段的 index 属性设置为:not_analyzed 或者 no2.8.2.2、使用不同的分析器:analyzer2.8.3、调整 _s转载 2021-09-29 23:02:15 · 635 阅读 · 0 评论 -
《Elasticsearch 源码解析与优化实战》第17章:Shrink原理分析
文章目录简介1.1、准备源索引1.2、缩小索引三、Shrink的工作原理3.1、创建新索引3.2、创建硬链接3.1、为什么一定要硬链接,不使用软链接?3.2、硬链接过程源码分析关注我的公众号【宝哥大数据】简介官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-shrink-index.html索引分片数量一般在模板中统一定义,在数据规模比较大的索引中,索引分片数一般也大一些,在笔者的集群中设置为24。同转载 2021-09-29 16:54:13 · 536 阅读 · 0 评论 -
《Elasticsearch 源码解析与优化实战》第20章:磁盘使用量优化
文章目录简介预备知识元数据字段索引映射参数优化措施禁用对你来说不需要的特性禁用doc values不要使用默认的动态字符串映射观察分片大小禁用source使用best_compressionFource MergeShrink Index数值类型长度够用就好使用索引排序来排列类似的文档在文档中以相同的顺序放置字段测试数据简介优化磁盘使用量与建立索引时的映射参数和索引元数据字段密切相关,在介绍具体的优化措施之前,我们先介绍这两方面的基础知识。预备知识元数据字段每个文档都有与其相关的元数据,比如_in转载 2021-09-29 09:35:30 · 463 阅读 · 0 评论 -
《Elasticsearch 源码解析与优化实战》第10章:索引恢复流程分析
简介**索引恢复(index.recovery)是ES数据恢复过程。待恢复的数据是客户端写入成功,但未执行刷盘(flush)的Lucene分段。**例如,当节点异常重启时,写入磁盘的数据先到文件系统的缓冲,未必来得及刷盘,如果不通过某种方式将未刷盘的数据找回来,则会丢失一些数据,这是保持数据完整性的体现;另一方面,由于写入操作在多个分片副本上没有来得及全部执行,副分片需要同步成和主分片完全一致,这是数据副本一致性的体现。根据数据分片性质,索引恢复过程可分为主分片恢复流程和副分片恢复流程。主分片从tr转载 2021-09-28 15:39:51 · 857 阅读 · 0 评论 -
《Elasticsearch 源码解析与优化实战》第19章:搜索速度优化
文章目录简介为文件系统cache预留足够的内存使用更快的硬件文档模型预索引数据简介本章讨论搜索速度的优化、搜索速度与系统资源、数据索引方式、查询方式等多个方面,下面我们逐一讨论如何优化搜索速度。为文件系统cache预留足够的内存在一般情况下,应用程序的读写都会被操作系统“cache”(除了direct 方式),cache 保存在系统物理内存中(线上应该禁用swap),命中cache可以降低对磁盘的直接访问频率。搜索很依赖对系统cache的命中,如果某个请求需要从磁盘读取数据,则一定会产生相对较高的延转载 2021-09-27 22:55:41 · 667 阅读 · 0 评论 -
《Elasticsearch 源码解析与优化实战》第5章:选主流程
简介Discovery模块负责发现集群中的节点,以及选择主节点。ES支持多种不同Discovery类型选择,内置的实现称为Zen Discovery,其他的包括公有云平台亚马逊的EC2、谷歌的GCE等。本章讨论内置的Zen Discovery实现。Zen Discovery封装了节点发现(Ping)、选主等实现过程,现在我们先讨论选主流程,在后面的章节中整体性介绍Discovery模块。设计思想所有分布式系统都需要以某种方式处理一致性问题。一般情况下,可以将策略分为两组:试图避免不一致及定义发生不一转载 2021-09-27 17:49:18 · 1092 阅读 · 0 评论 -
《Elasticsearch 源码解析与优化实战》第 6 章:数据模型
简介Elasticsearch(ES)可用于全文检索、日志分析、指标分析、APM 等众多场景,而且搭建部署容易,后期弹性扩容、故障处理简单。ES 在一定程度上实现了一套系统支持多个场景的希望,大幅度降低使用多套专用系统的运维成本(当然 ES 不是万能的,不能满足事务等场景)。正是因为其通用性和易用性,ES 自 2010 年发布首个版本以来得到爆发式的发展,广泛应用于各类互联网公司的不同业务场景。ES 使用开源的 Lucene 作为存储引擎,它赋予 ES 高性能的数据检索能力,但 Lucene 仅仅是一个转载 2021-09-27 08:53:04 · 761 阅读 · 0 评论 -
《Elasticsearch 源码解析与优化实战》第7章:写流程
简介本章分析ES写入单个和批量文档写请求的处理流程,仅限于ES内部实现,并不涉及Lucene内部处理。在ES中,**写入单个文档的请求称为Index请求,批量写入的请求称为Bulk请求。**写单个和多个文档使用相同的处理逻辑,请求被统一封装为BulkRequest。在分析写流程时,我们把流程按不同节点执行的操作进行划分。写请求的例子可以参考上一章。文档操作的定义在ES中,对文档的操作有下面几种类型:enum OpType {INDEX(0),CREATE(1),UPDATE(2),DELE转载 2021-09-26 22:38:23 · 1025 阅读 · 0 评论 -
《Elasticsearch 源码解析与优化实战》第8章:GET流程
文章目录一、简介1.1、可选参数二、GET 基本流程三、GET 详细分析3.1、协调节点3.1.1、内容路由3.2.2、转发请求3.2、数据节点3.2.1、读取及过滤3.2.2、InternalEngine的读取过程四、MGET 流程分析五、思考关注我的公众号【宝哥大数据】,更多干货一、简介**ES的读取分为Get和Search两种操作,这两种读取操作有较大的差异,GET/MGET必须指定三元组:index、 _type(ES7废弃,_doc) 、_id。 也就是说,根据文档 id 从正排索引中获取内容转载 2021-09-26 22:34:03 · 597 阅读 · 0 评论 -
ES数据库重建索引——Reindex(数据迁移)
一、应用背景:1、当你的数据量过大,而你的索引最初创建的分片数量不足,导致数据入库较慢的情况,此时需要扩大分片的数量,此时可以尝试使用Reindex。2、当数据的mapping需要修改,但是大量的数据已经导入到索引中了,重新导入数据到新的索引太耗时;但是在ES中,一个字段的mapping在定义并且导入数据之后是不能再修改的,所以这种情况下也可以考虑尝试使用Reindex。二、...原创 2021-08-02 11:18:45 · 6754 阅读 · 0 评论 -
IK分词器
一、安装1.1、ik分词器的安装下载ik分词器在es的plugins目录解压,记得创建一个目录二、使用效果2.1、在kibana中查询2.1.1、没有使用分词器2.1.2、使用ik分词器2.1.2.1、ik_max_word(细粒度分词)2.1.2.2、ik_smart(粗粒度分词)...原创 2021-07-27 14:32:14 · 438 阅读 · 0 评论 -
spark 批量读写 ES
1、需要添加elasticsearch-hadoop-version.jar, version对应集群的版本,2、代码# encoding=UTF-8# -*-coding:UTF-8-*-import jsonfrom pyspark.sql import SparkSession# 设置doc_iddef addId(data): return (data['id'], json.dumps(data))if __name__ == '__main__': spa原创 2021-07-09 08:40:08 · 1104 阅读 · 0 评论 -
ES--经纬度查询
参考官网 Elasticsearch Reference [7.10] » Query DSL » Geo queries一、准备数据1.1、geo_point ES中特有的类型geo_point,用来存储地图类型,某平台外卖。快递体现的配送人员距离你多少米,就是这个数据类型做出来的。1.2、新建索引mapPUT /map{ "settings": { "number_of_replicas": 3, "number_of_shards": 5 } , "mappi原创 2021-04-01 10:15:22 · 3680 阅读 · 0 评论 -
ES--聚合查询
文章目录前言一、cardinality(去重计数)查询1.1、依据province字段查询所有公司驻场在几个城市,即去重province后,最终有几个城市。1.1.1、RESTful 代码1.1.1.1、注意: 不适合需要精确去重场景1.1.2、java 代码二、range(范围统计)查询三、extended_stats(统计聚合)查询前言ES的聚合查询和MySQL的聚合查询类型类似,但是ES的聚合查询相比于MySQL要强大的多,ES提供的统计数据的方式多种多样,这里就挑选几个常用的来示范一下,更多的内原创 2021-03-31 17:30:23 · 1656 阅读 · 0 评论 -
ES--highlight(高亮)查询
文章目录一、高亮查询1.1、实例:依据smsContent字段包含的魅力字段语法高;1.1.1、RESTful 代码1.1.2、java 代码一、高亮查询高亮查询就是你输入的关键字,以一定的特殊字符样式展示给用户,让用户知道为什么这个结果被检索出来高亮展示的数据,本身就是文档中的一个field,单独将field以highlight的形式返回给你。ES提供了一个highlight属性,和query同级别的。fragment_size :指定高亮数据展示多少个字符回来;pe_tag:指定前缀标签原创 2021-03-31 17:13:38 · 13754 阅读 · 5 评论 -
ES--Query and filter context
参考官网 Elasticsearch Reference [7.10] » Query DSL » Query and filter context文章目录1.1、query与filter区别1.2、实例: 依据smsContent字段包含魅力的以及fee消费小于400的filter查询公司的短信内容1.2.1、RESTful 代码1.2.2、java 代码1.1、query与filter区别query,根据你的查询条件,去计算文档的匹配得到一个分数_score,并且根据分数进行排序,不会做缓存;f原创 2021-03-31 16:53:50 · 333 阅读 · 0 评论 -
ES--delete-by-query
一、介绍根据term,match等查询方式去删除大量的文档注意:如果需要删除的内容,是该index下的大部分数据,不建议使用delete-by-query, 因为这种方式匹配文档,是一条条的去删除的,非常消耗性能推荐: 新建一个新的index,将保留的文档内容添加到新的index,然后再直接访问新的index即可。二、实操2.1、RESTful 代码POST /person/_delete_by_query{ "query": { "range": { "age": {原创 2021-03-31 15:38:53 · 6398 阅读 · 0 评论 -
ES--复合查询(Compound queries)
参考官网 Elasticsearch Reference [7.10] » Query DSL » Compound queries文章目录一、bool 查询二、boosting 查询三、constant_score 查询四、dis_max 查询五、function_score 查询一、bool 查询二、boosting 查询三、constant_score 查询四、dis_max 查询五、function_score 查询...原创 2021-03-31 14:37:05 · 1864 阅读 · 0 评论 -
ES--模糊查询(prefix,fuzzy,wildcard,range,regexp)
主要是涉及ElasticSearch查询条件相对模糊,查询速度相对慢,实时查询时应尽量避免这些方式,但是这些查询方式又具有自己独特不可代替的功能,还是还有必要。参考官网 Elasticsearch Reference [7.10] » Query DSL » Term-level queries一、prefix查询前缀查询,可以通过一个关键字 去指定一个field的前缀,从而查询到指定的文档1.1、RESTful 代码POST /sms-logs-index/_search{ "quer原创 2021-03-31 11:28:54 · 4566 阅读 · 0 评论 -
ES--ids查询
参考: Elasticsearch Reference [7.10] » Query DSL » Term-level queries » IDs一、ID 查询 ES每一行数据,即文档都会有一个id,如果指定某一列field值作为id,则该列field必须为唯一键,类似于MySQL的UK;不过不指定,ES会自动生成,常常为了更好的定位数据,会指定一列满足UK的field作为文档的id,接下来我们说一下根据id查询。类似MySQL的 where id=?1.1、命令行GET /sms-logs-i原创 2021-03-31 11:16:08 · 3342 阅读 · 0 评论 -
ES--term&terms查询
2.1、term&terms查询2.1.1、term查询 参考: Elasticsearch Reference [7.10] » Query DSL » Term-level queries » Term query term的查询是代表完全匹配,搜索之前不会对你搜索的关键字进行分词,如关键字手机,不会分成手和机;再根据关键字去文档分词库中去匹配内容。类似于MySQL库的 where province = ?2.1.1.1、命令# from size类似于mysql的limitP原创 2021-03-31 10:43:43 · 3057 阅读 · 0 评论 -
ES-- match查询
2.2、match查询match查询属于高层查询,会根据你查询的字段的类型不一致,采用不同的查询方式。如果查询的是日期或者数值的字段,他会自动将你的字符串查询内容转换成日期或者数值对待;如果查询的内容是一个不能被分词的字段(keyword).match查询不会对你的指定查询关键字进行分词;如果查询的内容是一个可以分词的字段(text),match会将你指定的查询内容根据一定的方式去分词,然后去分词库中匹配指定的内容。总而言之:match查询,实际底层就是多个term查询,将多个term查询的结原创 2021-03-31 10:36:06 · 9416 阅读 · 0 评论 -
ES的各种查询
一、准备数据1.1、数据文档字段名称备注createDatesendDate发送时间 datelongCode发送长号码 如 16092389287811Mobile如 13000000000corpName发送公司名称,需要分词检索smsContent下发短信内容,需要分词检索State短信下发状态 0 成功 1 失败 integerOperatorid运营商编号1移动2联通3电信 integerProvince省原创 2021-03-30 15:33:35 · 6261 阅读 · 0 评论 -
使用java操作ES
一、Java连接ES1.1、引入依赖包 <dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> <version>7.10.2</version> </dependency>原创 2021-03-30 11:35:04 · 6311 阅读 · 0 评论 -
ES基本操作
基于ES-7.10.2一、ES的结构1.1、索引 Index索引 Index ES会对索引分片, 还会对索引进行备份(副本)备份分片默认不会帮助检索数据,当ES检索压力特别大的时候,备份分片才会帮忙检索数据1.2、类型 Type(es-7.x已经废弃)类似于Mysql中的Tablees7.x中只有一个_doc1.3、文档(Document)一个Type下可以有多个Doc,类似于Mysql表中的多行数据。1.4、属性 Field类似于Mysql表中的一行数据的多个列二、操作ES原创 2021-03-30 10:05:03 · 472 阅读 · 0 评论