es
文章平均质量分 56
java持续实践
Java开发
展开
-
es 7.x 优化 面试题
文章目录面试题为什么要使用 ElasticsearchElasticsearch 的 master 选举流程?Elasticsearch 集群脑裂问题?Elasticsearch 索引文档的流程Elasticsearch 更新和删除文档的流程?Elasticsearch 搜索的流程?Elasticsearch 在部署时,对 Linux 的设置有哪些优化方法?GC 方面,在使用 Elasticsearch 时要注意什么?Elasticsearch 对于大数据量(上亿量级)的聚合如何实现?在并发情况下,Elas原创 2022-03-05 10:39:17 · 369 阅读 · 0 评论 -
es 7.x 优化 重要配置
cluster.name , 值 elasticsearch , es集群的名称, 建议改成与所存数据相关的名称,ES 会自动发现在同一网段下的集群名称相同的节点.node.name , 值: node-1 , 集群中的节点名,在同一个集群中不能重复。节点的名称一旦设置,就不能再改变了。当然,也可以设 置 成 服 务 器 的 主 机 名 称 ,例如node.name:${HOSTNAME}。node.master 值: true , 指定该节点是否有资格被选举成为 Master 节点,默.原创 2022-02-27 20:09:20 · 622 阅读 · 0 评论 -
es 7.x 优化 内存设置
文章目录内存设置内存设置ES 默认安装后设置的内存是 1GB,对于任何一个现实业务来说,这个设置都太小了。如果是通过解压安装的 ES,则在 ES 安装文件中包含一个 jvm.option 文件,添加Xms Xmx命令来设置 ES 的堆大小,Xms 表示堆的初始大小,Xmx 表示可分配的最大内存,都是 1GB。确保 Xmx 和 Xms 的大小是相同的,其目的是为了能够在 Java 垃圾回收机制清理完堆区后, 不需要重新分隔计算堆区的大小而浪费资源,可以减轻伸缩堆大小带来的压力。假设你有一个 64原创 2022-02-27 19:49:08 · 1065 阅读 · 0 评论 -
es 7.x 优化 写入速度优化
文章目录写入速度优化批量数据提交优化存储设备合理使用合并减少 Refresh 的次数加大 Flush 设置减少副本的数量写入速度优化ES 的默认配置,是综合了数据可靠性、写入速度、搜索实时性等因素。实际使用时,我们需要根据公司要求,进行偏向性的优化。针对于搜索性能要求不高,但是对写入要求较高的场景,我们需要尽可能的选择恰当写优化策略。综合来说,可以考虑以下几个方面来提升写索引的性能:加大 Translog Flush ,目的是降低 Iops、Writeblock。增加 Index Refre原创 2022-02-27 19:11:01 · 811 阅读 · 0 评论 -
es 7.x 优化 路由选择
文章目录路由选择路由选择当我们查询文档的时候,Elasticsearch 如何知道一个文档应该存放到哪个分片中呢?它其实是通过下面这个公式来计算出来:shard = hash(routing) % number_of_primary_shardsrouting 默认值是文档的 id,也可以采用自定义值,比如用户 id。number_of_primary_shards 分片数量不带 routing 查询在查询的时候因为不知道要查询的数据具体在哪个分片上,所以整个过程分为 2 个步骤1.分原创 2022-02-27 17:42:44 · 1022 阅读 · 0 评论 -
es 7.x 优化 分片策略
文章目录设置合理分片数推迟分片分配设置合理分片数分片和副本的设计为 ES 提供了支持分布式和故障转移的特性,但并不意味着分片和副本是可以无限分配的。而且索引的分片完成分配后由于索引的路由机制,我们是不能重新修改分片数的。可能有人会说,我不知道这个索引将来会变得多大,并且过后我也不能更改索引的大小,所以为了保险起见,还是给它设为 1000 个分片吧。但是需要知道的是,一个分片并不是没有代价的。需要了解:一个分片的底层即为一个 Lucene 索引,会消耗一定文件句柄、内存、以及 CPU 运转。原创 2022-02-27 17:35:58 · 1156 阅读 · 0 评论 -
es 7.x 优化 硬件选择
es的yml中配置数据存储磁盘的方法使用 SSD。比机械磁盘优秀多了。使用 RAID 0。条带化 RAID 会提高磁盘 I/O,代价显然就是当一块硬盘故障时整个就故障了。不要使用镜像或者奇偶校验 RAID 因为副本已经提供了这个功能。另外,使用多块硬盘,并允许 Elasticsearch 通过多个 path.data 目录配置把数据条带化分配到它们上面。不要使用远程挂载的存储,比如 NFS 或者 SMB/CIFS。这个引入的延迟对性能来说完全是背道而驰的。...原创 2022-02-27 17:05:49 · 1038 阅读 · 0 评论 -
es 7.x 与SpringData的集成 文档搜索
文章目录文档搜索termQuery分页条件查询文档搜索termQuerypackage com.thc.es;import org.elasticsearch.index.query.QueryBuilders;import org.elasticsearch.index.query.TermQueryBuilder;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.原创 2022-02-27 16:59:03 · 169 阅读 · 0 评论 -
es 7.x 与SpringData的集成 文档操作
文章目录文档操作文档操作执行新增方法@RunWith(SpringRunner.class)@SpringBootTestpublic class SpringDataESProductDaoTest { @Autowired private ProductDao productDao; /** * 新增 */ @Test public void save(){ Product product = new Product()原创 2022-02-27 16:43:52 · 411 阅读 · 0 评论 -
es 7.x kibana 配置es
文章目录kibana 配置eskibana 配置es解压kibana后打开 config 目录添加如下的信息.# 默认端口server.port: 5601# ES 服务器的地址elasticsearch.hosts: ["http://localhost:9200"]# 索引名kibana.index: ".kibana"# 支持中文i18n.locale: "zh-CN"bin 目录下执行此bat文件.等待比较久之后, 出现如下, 启动完成浏览器输入http://原创 2022-02-27 15:37:10 · 1329 阅读 · 0 评论 -
es 7.x 与Spring Data的集成demo
文章目录SpringData 框架集成SpringData 框架集成SpringData 用于简化数据库 , 非关系型数据库访问的框架.目标是对数据的访问更加简便. 实现对数据的crud和分页, 排序等操作.原创 2022-02-27 15:25:34 · 1163 阅读 · 0 评论 -
es 7.x 进阶 文档冲突
文章目录文档冲突外部系统版本控制文档冲突并发运行时的数据控制.悲观锁:假设有冲突发送, 阻塞资源的访问, 只有一个线程对其修改乐观锁:不会阻塞正在尝试的操作, 使用版本号, 只有当前最新的版本号或者大于当前版本号才能修改成功, 程序可以自行决定如何解决冲突, 例如重试更新, 使用新的数据等.版本号的实战 :创建文档 :创建一个shopping 的索引put请求http://127.0.0.1:9200/shopping1创建文档 put请求http://127.0.0.1:9原创 2022-02-27 14:49:22 · 769 阅读 · 0 评论 -
es 去除磁盘限制的配置 on thid node will be marked read-only
es会有磁盘检测, 如果超过某个值, 则无法写入数据.在yml中修改 配置如下cluster.routing.allocation.disk.threshold_enabled: false原创 2022-02-27 11:46:56 · 584 阅读 · 0 评论 -
es 7.x 进阶 文档分析
文章目录文档分析的过程测试分词器测试标准的分词器指定分析器IK 分词器IK 分词器扩展词汇自定义分析器文档分析的过程将文档分成适合于倒排索引的独立的词条.将词条统一化为标准格式, 例如英语中去除时态分析器执行上面的内容, 实际上是将上面的功能封装到了包里.字符过滤器 : 将字符串按顺序通过每个字符过滤器, 在分词前整理字符串, 一个字符过滤器用来去掉html, 或者将 & 转化为 and分词器: 字符串被分词器分为单个的词条, 一个简单的分词器遇到空格和标点符号的时候, 会将文原创 2022-02-27 11:06:14 · 838 阅读 · 0 评论 -
es 7.x 进阶 文档刷新 文档刷写 文档合并
文章目录近实时搜索es写入数据的流程近实时搜索es是按段搜索的.最新的数据存储在最新的段上.es不是实时的, 而是近实时的. 是基于分段搜索进行的.数据写入的时候, 先找到协调节点, 协调节点会有路由计算规则,hash(_id) % 分片数量计算主分片的位置.数据写入主分片, 之后写入副本.延时: 主分片的延时 + 并行写入副本的最大延时es写入数据的流程在内存中建立索引 . —> 形成分段的数据对象. ----> 数据落磁盘 (flush) —> 用户进行原创 2022-02-26 19:36:50 · 534 阅读 · 1 评论 -
es 7.x 进阶 文档搜索
文章目录早期的全文检索动态更新索引早期的全文检索早期的全文检索是把整个文档集合建一个很大的倒排索引写入磁盘, 一旦新的索引就绪, 就的会被替换, 这样就能检索新的数据.这样做倒排索引写入磁盘后, 就不会变化, 不可变的好处不需要锁, 不用担心多线程并发修改由于其不变, 可以把数据写入缓存, 并且缓存也不存在一致性问题, 提升性能.其他缓存, 在索引的生命周期内始终有效, 不需要每次修改数据时重新建立.单个大的倒排索引数据会被压缩, 减少磁盘的I/O, 和需要被缓存到内存的索引使用量.不原创 2022-02-26 18:59:02 · 184 阅读 · 0 评论 -
es 7.x 进阶 分片原理 & 倒排索引
文章目录分片原理倒排索引分片原理分片: 一个索引如果数据太多, 会影响其查询的效率, 因此把一个大的索引分为各个部分, 每一个部分称之为分片, 所有的分片组合在一块, 就是完整的数据, 每一个分片是es中最小的工作单元, 数据的写入和读取都是基于分片来完成的. 一条数据根据路由计算找到分片的位置, 数据写入到es完成后 , 会进行倒排索引的建立. 在查询中去应用倒排索引, 就可以去应用倒排索引的数据了.倒排索引文章中的关键词与id进行绑定.这种映射关系, 称之为倒排索引原创 2022-02-10 21:50:19 · 1377 阅读 · 0 评论 -
es 7.x 进阶 更新流程 & 批量操作流程
文章目录更新流程批量操作流程更新流程部分更新一个文档, 和读取与写入流程要进行结合.es 7.x 进阶 数据写到es的流程 & 读数据的流程先读取数据, 才能去更新数据.客户端发送请求到master 协调节点(不一定要到master节点)根据数据的路由请求, 跳转到具体的节点. 比如说P0节点.P0读取到数据后, 需要不断去写新的数据, 因为别的进程也可能在更新数据.P0更新完成后, 也要去更新其他副本.副本和主分片更新完成后, 客户端得到了响应. 客户端就能读到最新的数据原创 2022-02-09 22:39:51 · 1268 阅读 · 0 评论 -
es 7.x 进阶 数据写到es的流程 & 读数据的流程
文章目录数据写到es的流程读数据的流程数据写到es的流程客户端连接es集群之前, 并不知道, 要连接哪一台节点的数据.插入数据的路由计算 ,是客户端连接到es集群后, 所需要进行的计算.在一开始客户端连接es集群的时候, 可能连接的是node2, 但根据es计算出来的id和hash运算取模后, 可能是node1, 此时node2就会把数据转发到node1 .客户端请求集群节点 (协调节点)协调节点将请求转换到指定的节点主分片进行数据的保存主分片把数据发送到各个副本副本将数据进行保存,原创 2022-01-26 21:29:42 · 1325 阅读 · 0 评论 -
es 7.x 进阶 路由计算 分片控制
文章目录保存数据时的路由计算读取数据时的分片控制保存数据时的路由计算红色的为master节点蓝色为两个从节点.绿色为主分片, 紫色为副本.每个主分片有两个副本.一个文档 , 分配到哪个节点上是有路由计算规则的.路由计算公式 : hash(文档的主键id) % 主分片数量对文档的id, 进行hash运算, 对主分片数量进行取模.如果有三个节点, 即取余的结果只会在0,1 ,2 内.读取数据时的分片控制对于查询数据. 在查询之前, 插入完成之后 , 主节点和副本都会有数据(如果配原创 2022-01-26 20:58:47 · 1066 阅读 · 0 评论 -
es 7.x 应对故障
文章目录应对故障应对故障此时集群中有3个节点, 此时如果把节点1服务停止掉.停掉之前的集群停掉之后的集群 head连接1002, 可以看到node2选举成了master此时如果把node3也停掉, 可以看到head插件直接连接不上node2了.node2上日志报错如下, 选举不到master , 必须至少要两个节点才能选举master.此时重启node1, 重启node1之前, 修改yml, 添加如下的配置, 用于集群的寻找discovery.seed_hosts: [“lo原创 2022-01-23 19:46:30 · 570 阅读 · 0 评论 -
es 7.x 水平扩容
文章目录水平扩容增加副本的节点数量水平扩容目前集群只有两个节点, 此时再启动一个节点, 则es集群会自动的水平扩容, 把索引分片数据, 分配到新的节点上去.例如现在主分片都是在node1 , 副本分片都在node2启动第三个节点后 集群分片状况如下 .分片1的主节点, 分配到了节点2.增加副本的节点数量由于主分片的数量在创建索引的时候, 已经定下来了, 无法改变, (主分片决定了能够存储的数据最大容量)但可以增加副本的数量, (副本的数量决定了读操作的吞吐量)修改副本的数量执行put原创 2022-01-23 19:20:23 · 850 阅读 · 1 评论 -
es 7.x 单节点集群&故障转移
文章目录单节点集群的概念演示分片与副本故障转移第一个报错第二个错误第三个错误单节点集群的概念整个集群中, 只有一个节点, 就叫做单节点集群.演示分片与副本默认情况下, 索引的分片是1, 副本是1.分配3个主分片和一个副本.即这 三个分片, 都有一个副本 , 那么就会有6个分片.由于linux的es集群不能只启动一个节点. 因此需要使用windows的es集群.windows的es集群操作如下, 先只启动一个节点https://javaweixin6.blog.csdn.net/artic原创 2022-01-23 18:56:36 · 1380 阅读 · 0 评论 -
es 7.x Windows 集群部署
文章目录集群包的准备启动第一个节点启动第二个节点启动第三个节点集群包的准备新建一个elasticsearch-cluster文件夹把elasticsearch-7.16.2-windows-x86_64.zip文件解压三份, 分别命名为node1node2node3如下启动第一个节点对node1的config目录下的elasticsearch.yml进行修改#集群名称,节点之间要保持一致cluster.name: my-elasticsearch# 当前节点名称 是否能 成为ma原创 2022-01-23 16:14:34 · 1128 阅读 · 0 评论 -
es 7.x es的系统架构简介
文章目录系统架构简介系统架构简介es集群会有多个节点, 从里面选举出一个节点作为mastermaster需要去管理整个集群. 节点中存储了索引的数据.索引有副本和分片的概念,p0 p1 p2 都是一个一个的分片数据.注意: p0 和r0 是不能在同一台机器上的. 即副本和主数据不能在同一个节点上.万一此节点挂了, 那么数据就全部丢失了.一个运行中的 Elasticsearch 实例称为一个节点,而集群是由一个或者多个拥有相同cluster.name 配置的节点组成, 它们共同承担数原创 2022-01-23 15:12:23 · 216 阅读 · 0 评论 -
es 7.x 核心概念
文章目录索引 index类型 type文档 document字段 field映射 (mapping)分片 (shards)副本 (replicas)分配 (allocation)索引 index一个索引就是一个拥有几分相似特征的文档的集合.特点是要有相似性.商品数据作为索引.订单数据作为索引.而不要把商品数据和订单数据放在一起作为索引, 因为他们没有相似性.一个索引由一个名称来标识, 且索引的名称必须全部是小写字母.对索引中的文档数据, 进行搜索, 更新, 删除时 ,都要用到这个索引名称原创 2022-01-23 14:51:49 · 939 阅读 · 0 评论 -
es 7.x Linux 集群部署
文章目录上传Linux的es安装包创建es用户与配置启动依次启动每个es节点启动第一台es启动第二台es启动第三台es关于cluster.initial_master_nodes配置的作用修改cluster.initial_master_nodes的实验集群部署之前, 需要先准备三台能够相互访问的centos7 虚拟机, 可以参考如下的链接.https://javaweixin6.blog.csdn.net/article/details/122638853上传Linux的es安装包参考如下文章h原创 2022-01-23 12:11:12 · 1714 阅读 · 0 评论 -
virtualbox 6 centos7 虚拟机复制
参考文章https://blog.csdn.net/ssyes123/article/details/87556521要被复制的虚拟机处于关机状态此处右键选择复制, 给要复制的虚拟机设置一个新的名称 . 重新生成mac地址选择完全复制复制完成后 , 即可启动. 可以看到重新分配了一个ip地址 执行 vim /etc/hostname 修改主机名我这网络使用桥接模式, 不需要去虚拟机中修改网络配置.同样的操作, 复制两台虚拟机. 都进行启动. 进测试能相互ping通原创 2022-01-22 16:34:00 · 911 阅读 · 0 评论 -
es 7.x Linux 单节点部署
文章目录es的Linux安装包的上传创建es用户修改配置es的启动es的Linux安装包的上传到es的官网下载es的Linux安装包elasticsearch-7.8.0-linux-x86_64.tar.gz将此上传到Linux服务器上在Linux的opt目录下新建目录mkdir -p module/software使用electerm的sftp功能将文件拷贝到/opt/module/software 目录下可以看到上传的包把es解压缩到上一级目录tar -zxvf elastic原创 2022-01-22 14:49:33 · 1349 阅读 · 0 评论 -
es 7.x JavaAPI 文档 最大值查询 分组查询
文章目录最大值查询分组查询最大值查询import org.apache.http.HttpHost;import org.elasticsearch.action.search.SearchRequest;import org.elasticsearch.action.search.SearchResponse;import org.elasticsearch.client.RequestOptions;import org.elasticsearch.client.RestClient;im原创 2022-01-17 22:19:36 · 1667 阅读 · 0 评论 -
es 7.x JavaAPI 文档 模糊查询 高亮查询
文章目录模糊查询高亮查询模糊查询主要是使用QueryBuilders.fuzzyQuery("name", "wangwu") 进行模糊查询, 第一参数为要模糊查询的字段, 第二字段为要模糊查询的值..fuzziness(Fuzziness.TWO) 用于表示能够进行几个字段的模糊查询.import org.apache.http.HttpHost;import org.elasticsearch.action.search.SearchRequest;import org.elastics原创 2022-01-17 20:30:13 · 2218 阅读 · 0 评论 -
es 7.x JavaAPI 文档 组合条件查询 范围查询
文章目录组合条件查询范围查询组合条件查询import org.apache.http.HttpHost;import org.elasticsearch.action.search.SearchRequest;import org.elasticsearch.action.search.SearchResponse;import org.elasticsearch.client.RequestOptions;import org.elasticsearch.client.RestClient;原创 2022-01-16 18:09:12 · 805 阅读 · 0 评论 -
es 7.x JavaAPI 文档 条件查询 分页查询 排序查询 字段查询
文章目录条件查询分页查询排序查询字段查询条件查询条件查询, 只查询age是30的. 主要是使用 QueryBuilders.termQuery 构造条件和值.import org.apache.http.HttpHost;import org.elasticsearch.action.search.SearchRequest;import org.elasticsearch.action.search.SearchResponse;import org.elasticsearch.client原创 2022-01-16 15:35:45 · 954 阅读 · 0 评论 -
es 7.x JavaAPI 文档 批量新增
文章目录查询所有查询所有查询数据之前, 先插入一批数据:import org.apache.http.HttpHost;import org.elasticsearch.action.bulk.BulkRequest;import org.elasticsearch.action.bulk.BulkResponse;import org.elasticsearch.action.index.IndexRequest;import org.elasticsearch.client.Request原创 2022-01-16 14:53:40 · 1074 阅读 · 0 评论 -
es 7.x JavaAPI 文档 批量新增 批量删除
文章目录批量新增批量删除批量新增批量操作, 主要是用BulkRequest , 在这个request中, 批量添加新增文档的请求.import org.apache.http.HttpHost;import org.elasticsearch.action.bulk.BulkRequest;import org.elasticsearch.action.bulk.BulkResponse;import org.elasticsearch.action.index.IndexRequest;i原创 2022-01-16 14:31:42 · 1031 阅读 · 0 评论 -
es 7.x JavaAPI 文档 查询 删除
文章目录根据id 查询文档根据id文档删除根据id 查询文档查询user索引下id为1002文档 . 使用GetRequestimport org.apache.http.HttpHost;import org.elasticsearch.action.get.GetRequest;import org.elasticsearch.action.get.GetResponse;import org.elasticsearch.client.RequestOptions;import org.e原创 2022-01-16 11:56:00 · 477 阅读 · 0 评论 -
es 7.x JavaAPI 文档创建 更新
文章目录文档创建文档修改文档创建创建User对象, 用于封装数据public class User { private String name; private String sex; private Integer age; public String getName() { return name; } public void setName(String name) { this.name = name;原创 2022-01-16 11:30:23 · 841 阅读 · 0 评论 -
es 7.x JavaAPI 索引查询 删除
文章目录索引查询索引删除索引查询执行如下代码, 对上一步创建的索引进行查询操作import org.apache.http.HttpHost;import org.elasticsearch.client.RequestOptions;import org.elasticsearch.client.RestClient;import org.elasticsearch.client.RestHighLevelClient;import org.elasticsearch.client.indi原创 2022-01-15 12:02:35 · 687 阅读 · 0 评论 -
es 7.x JavaAPI 索引创建
文章目录java api 创建索引java api 创建索引import org.apache.http.HttpHost;import org.elasticsearch.client.RequestOptions;import org.elasticsearch.client.RestClient;import org.elasticsearch.client.RestHighLevelClient;import org.elasticsearch.client.indices.Create原创 2022-01-15 11:35:10 · 928 阅读 · 0 评论 -
es 7.x JavaAPI 项目搭建
文章目录搭建java项目使用es链接代码遇到的问题maven依赖问题日志打印问题搭建java项目搭建一个maven项目.pom使用如下:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLoc原创 2022-01-15 11:00:09 · 465 阅读 · 0 评论