ES & lucene
文章平均质量分 90
ES 与 lucene的使用及原理
zhifeng687
这个作者很懒,什么都没留下…
展开
-
ES的数据分片策略
Elastic search 基本概念Cluster集群,一个ES集群是由多个节点(Node)组成的,每个集群都有一个cluster name 作为标识`cluster.name: 【elastic search cluster name】`在同一网段下的Elastic search实例会通过cluster name 决定加入哪个集群下。复制代码node节点,一个ES实例就是一个node,一个机器可以有多个实例,所以并不是说一台机器就是一个node,大多数情况下,每个node运行在转载 2016-05-05 15:45:58 · 1855 阅读 · 0 评论 -
ElasticSearch 7.x的raft算法选主流程
简介7.x之后的ES,采用-种新的选主算法Raft [rɑːft] n. 筏;救生艇。Raft算法选主流程其设计原则如下:容易理解 减少状态的数量,尽可能消除不确定性在Raft中,节点可能的状态有三种,其转换关系如下:正常情况下,集群中只有一个Leader,其他节点全是Follower。Follower 都是被动接收请求,从不主动发送任何请求。Candidate [ˈkændɪdət; ˈkændɪdeɪt] n. 候选人,候补者;应试者 是从Follower到Leader的中.转载 2018-04-24 16:17:17 · 1235 阅读 · 0 评论 -
深入理解elasticsearch增删改查数据的原理
1、es写入数据的基本原理及过程假设es中的一个index,有3个shard,部署在3台机器上,如图1所示。图1 es部署图当客户端写入一条数据的时候,可以挑选任意一个节点去写,假设客户端把数据分发到了机器02上去了。此时es进程02就被称为协调节点(coordinating node)。图2es协调节点协调节点此时就会对这这条数据做hash,假设这条数据hash完之后属于shard01,因为shard01 primary在es进程01上,es进程02就会把把请求转发给.转载 2015-06-03 16:56:11 · 3175 阅读 · 0 评论 -
Elasticsearch调优实践
背景Elasticsearch(ES)作为NOSQL+搜索引擎的有机结合体,不仅有近实时的查询能力,还具有强大的聚合分析能力。因此在全文检索、日志分析、监控系统、数据分析等领域ES均有广泛应用。而完整的Elastic Stack体系(Elasticsearch、Logstash、Kibana、Beats),更是提供了数据采集、清洗、存储、可视化的整套解决方案。本文基于ES 5.6.4,从...转载 2015-09-01 16:05:44 · 938 阅读 · 0 评论 -
ES scroll search原理
一、 ES搜索两阶段简介ES的搜索是分2个阶段进行的,即Query阶段和Fetch阶段。Query阶段比较轻量级,通过查询倒排索引,获取满足查询结果的文档ID列表。Fetch阶段比较重,需要将每个shard的结果取回,在协调结点进行全局排序。 通过From+size这种方式分批获取数据的时候,随着from加大,需要全局排序并丢弃的结果数量随之上升,性能越来越差。二、 scroll分析Scroll查询,先做轻量级的Query阶段以后,免去了繁重的全局排序过程。 它只是将查询结果集,也...转载 2017-03-08 16:06:47 · 1053 阅读 · 0 评论 -
ES重建索引
elasticsearch索引一旦建立,就无法动态修改其字段的映射类型,有时候因为人为原因污染了索引的mapping,这个时候就只能通过重建索引来修改索引的mapping设置了。在一次项目中,有一个字段结构如下: 123456 { "logistics":{ "company":"string", "no":"string" }} 由于当初创建索引的时候,既没有给这个索引中的这个字段指定合适的类型,也没有通过动态模板来为这.转载 2016-12-19 02:57:26 · 385 阅读 · 0 评论 -
Elasticsearch段合并
lucene索引是基于多个索引段创建,索引文件中绝大部分数据都是只写一次,读多次,而只有用于保存文档删除信息的文件才会被多次更改在某些时刻,当某种条件满足时,多个索引段会被拷贝合并到一个更大的索引段,而那些旧的索引段会被抛弃并从磁盘中删除,这操作叫做段合并(segment merging)为什么要进行段合并?索引段的个数越多,搜索性能越低且消耗内存更多索引段是不可变的,物理上你并不能从...转载 2015-08-15 19:04:23 · 1207 阅读 · 0 评论 -
ES集群的高可用实现
ES集群的高可用可分为读高可用、写高可用与发生改变(集群状态改变)时高可用。其实这么说不是很准确,因为部分集群状态的改变会影响读和写的高可用。读高可用指的是多个副本情况下,某个副本出问题时不影响整个系统的读。写高可用指的是多个副本情况下,某个副本出问题时不影响整个系统的写,通过translog来确保数据不会丢失。集群状态的改变的高可用包含自动处理节点的加入和离开,自动同步改变的集群状态,当集...转载 2016-04-05 17:06:07 · 1515 阅读 · 0 评论 -
ES缓存
node query cache一个节点的所有shard共享一个缓存区。利用LRU算法替换缓存内容。query cache缓存查询结果,但只缓存filter类型的查询。可通过indices.queries.cache.size设置缓存的大小。在5.1.1中移除了term query的缓存。因为term query和filter query二者查询时间相差不多。https://www...转载 2017-01-04 22:54:45 · 1386 阅读 · 0 评论 -
elasticsearch2.2之index映射参数的not_analyzed属性
官方文档:index索引index这个参数可以控制字段应该怎样建索引,怎样查询。它有以下三个可用值:· no: 不把此字段添加到索引中,也就是不建索引,此字段不可查询· not_analyzed:将字段的原始值放入索引中,作为一个独立的term,它是除string字段以外的所有字段的默认值。· analyzed:string字段的默认值,会先进行分析后,再把分析的term结果存入...原创 2016-10-13 14:37:31 · 2868 阅读 · 0 评论 -
ES 设置只索引不存储的source field
Including / Excluding fields from _sourceAn expert-only feature is the ability to prune the contents of the _source field after the document has been indexed, but before the _source field is stored....翻译 2016-10-14 11:36:28 · 2773 阅读 · 0 评论 -
ES 设置支持/禁用排序、聚合的mapping parameters
doc_valuesdoc_values参数是为了加快排序、聚合操作,在建立倒排索引的时候,额外增加一个列式存储映射,是一种空间换时间的做法。默认是开启的,大多数字段在索引时都会生成doc_values,但是text字段除外。对于确定不需要排序或者聚合的字段,可以关闭doc_values以节省磁盘空间。PUT my_index{ "mappings": { "propert...原创 2016-10-15 17:03:18 · 1095 阅读 · 0 评论