- 浏览: 887087 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (1096)
- 大数据存储 (76)
- 编程语言(Java&Scala) (46)
- 大数据建模 (33)
- 开发与管理 (8)
- 操作系统 (13)
- 实用代码集合 (25)
- 新技术研究 (15)
- 前端技术研究 (22)
- 物联网 (18)
- 兴趣探索 (15)
- 编程语言(Groovy&Grails) (92)
- 编程语言(RubyOnRails) (153)
- 个人收藏 (153)
- 技术管理 (12)
- 编程语言(Flex) (8)
- 架构和框架(GWT) (4)
- 数学和算法 (6)
- 人工智能(TensorFlow) (11)
- 编程语言(Python) (6)
- 移动开发 (4)
- 软件工程实践 (54)
- 个人感悟 (6)
- 职场感悟 (5)
- 行业经验 (23)
- 产品和运营 (10)
- 生活与随想 (155)
- 简单生活 (70)
- 天空的云 (53)
- 秋月春风 (14)
- 东逝水 (59)
- 浪花淘 (35)
- 白发渔樵 (4)
最新评论
-
cljhyjs:
今天看看在研究,已经安装好了,请问怎么一步一步使用呢?
Thingsboard -
yx200404:
说一下十维空间 -
Clear_Love:
设置了也报错
Xcode 7遇到 App Transport Security has blocked a cleartext HTTP 错误 -
wang263574375:
我想问的是,如果防火墙的设置不能改变,那么要怎么处理呢?
ORA-12571:TNS包写入程序失败 -
ralflsb:
SmartSVN 8.6
SmartSVN破解包
最近一直在研究ES集群,也看了很多篇前辈们总结的博客,同事借鉴了官方给出的一些建议,做了一下几点总结,希望对后来者有用:
1、内存交换。为了防止ES进程的内存被置换到磁盘上(会导致在检索的时候发生内存交换导致检索速度迟缓)引起性能急速下降。在启动ES的时
候可以把config/elasticsearch.yml中的bootstrap.mlockall设置为true就可以了。
2、节点的细分。在官方文档中,主要定义了master node 、data node 、client node 、tribe node、coordinating node,他们之间的协调工作,才能使
集群节点更好的工作。(需要仔细研究,多搭建几个节点测试下)。
master node:配置 node.master : true node.data : false
1)当master为false,而data为true时,会对该节点产生严重负荷;
2)当master为true,而data为false时,该节点作为一个协调者;
3)当master为false,data也为false时,该节点就变成了一个负载均衡器。
3 索引刷新。每次在进行一次document操作的时候,有两个可选项,在索引(动词,理解为插入一条document)之后刷新,在查询(同上)之前刷
新,在索引之后刷新,会牺牲索引的效率(每次插入document都额外的进行刷新),在查询之前刷新会牺牲查询的效率(查询之前会额外的进行刷新)。这两种方式虽然都可以让我们每次查到的数据都是实时性的,但是效率特别的低下,因此我们正常情况可以采用定时刷新的方式,即每次间隔一秒刷新一次(时间可以自己定)。在创建构建客户端的时候,设置index.refresh_interval为想要的数值即可。如:1s,也可以在elasticsearch中配置index.refresh_interval:1s
4 内存分配。es在内存分配上官方给的内存最大不超过32G(和os有关,超过32G,指针会变长,增加cpu压力),一般为机器内存的50%即可,剩下
的会交给lucene,Lucene的设计目的是把底层OS里的数据缓存到内存中。Lucene的段是分别存储到单个文件中的,这些文件都是不会变化的,所以很利于缓存,同时操作系统也会把这些段文件缓存起来,以便更快的访问。
5 分片数量。ES在创建索引的时候默认的分片大小是5。我们可以在创建索引的时候指定分片数量。注意:分片一旦确定,就没法更改。这是因为
Es在创建分片之后,每次索引(动词)都会使用一个算法
shard= hash(routing) % number_of_primary_shards
来确定存储在哪一个分片上,如果更改分片的数量,那么之前所有的document都将无效。没法被routing。
官方给的建议:每个node上的分片数量不超过3个,因此我们如果想要更多的分片只能通过增加节点的方式。
分片不宜过大,也不宜过小。具体可以参考官网的文档和压力测试的结果来设定大小。
为了导入数据更快,可以在创建索引的时候把复制分片设置为0.导入数据结束之后再设置为想要的值。
6 routing。Elasticsearch的路由机制和它的分片机制有相似的地方,他们都是使用的hash算法。将具有相同hash值得文档放在一起。
情景分析:如果poi将全国所有的店面的信息放在es中,如果我们不指定路由,es会随机的将所有的文档存入分片中(数据很大,所以我们需要不止5个分片),现在我们想要查询上海地区所有的poi信息,es的做法是master收到请求,然后广播,每个节点查询数据,然后将数据交给通道节点合并,排序交给用户。这个会严重增加es的节点压力,网络负载。如果我们在查询的时候能明确的知道上海的poi数据在某一个节点上,我们只需要在查询的时候指定routing,es就会在routing指定的节点上查询,就可以避免不必要的资源浪费。也可以提高查询的速度。
我们可以在添加数据的时候指定某一个相同值得字段放在一起,比如上海的cityid=1,我们可以使用以下命令
Curl -XPUT localhost:9200/store/poi?routing=cityId -d '{
"cityId":"1",
"cityName":"上海"
}'
PUT test/_settings
{
"index.routing.allocation.include.size":"big,medium" #这个是把test索引的数据全部分配到big和medium节点
}
PUT test/_settings
{
"index.routing.allocation.exclude.size": "small" #与上面相反,把test索引的数据全部移除small节点
}
7 导入。在导入数据的时候建议先把副本设置为0.待导入完毕之后再设置为需要的数据。
curl -XPUT '192.168.5.112:9200/qinzi/_settings?pretty' -d '
{
"index" : {
"number_of_replicas" : 1
}
}'
导入的时候先把刷新的时间设置为-1(这样在索引的时候,数据对搜索不可见,就是在索引的时候,数据是没法实时查询的),等到索引结束之后,在设置为想要的时间,这个值可以可以通过api设置
curl -XPUT localhost:9200/test/_settings-d '{
"index" : {
"refresh_interval" :"-1"
}
}'
记得在索引之后改回来,不然之前索引的数据都没法查询。
8 节点状态监控。
9 segments优化 ES是基于lucene的,
curl -XPOST192.168.5.112:9200/baidu/_forcemerge?max_num_segments=1(强制性的把segments变为1)在合并的时候需要预留足够的磁盘空间,因为segments合并时候是采用一定的策略,把segments合并,但是旧的还会暂时存在的。
curl -XPOST 192.168.5.112:9200/baidu/_optimize?max_num_segments=1
1、内存交换。为了防止ES进程的内存被置换到磁盘上(会导致在检索的时候发生内存交换导致检索速度迟缓)引起性能急速下降。在启动ES的时
候可以把config/elasticsearch.yml中的bootstrap.mlockall设置为true就可以了。
2、节点的细分。在官方文档中,主要定义了master node 、data node 、client node 、tribe node、coordinating node,他们之间的协调工作,才能使
集群节点更好的工作。(需要仔细研究,多搭建几个节点测试下)。
master node:配置 node.master : true node.data : false
1)当master为false,而data为true时,会对该节点产生严重负荷;
2)当master为true,而data为false时,该节点作为一个协调者;
3)当master为false,data也为false时,该节点就变成了一个负载均衡器。
3 索引刷新。每次在进行一次document操作的时候,有两个可选项,在索引(动词,理解为插入一条document)之后刷新,在查询(同上)之前刷
新,在索引之后刷新,会牺牲索引的效率(每次插入document都额外的进行刷新),在查询之前刷新会牺牲查询的效率(查询之前会额外的进行刷新)。这两种方式虽然都可以让我们每次查到的数据都是实时性的,但是效率特别的低下,因此我们正常情况可以采用定时刷新的方式,即每次间隔一秒刷新一次(时间可以自己定)。在创建构建客户端的时候,设置index.refresh_interval为想要的数值即可。如:1s,也可以在elasticsearch中配置index.refresh_interval:1s
4 内存分配。es在内存分配上官方给的内存最大不超过32G(和os有关,超过32G,指针会变长,增加cpu压力),一般为机器内存的50%即可,剩下
的会交给lucene,Lucene的设计目的是把底层OS里的数据缓存到内存中。Lucene的段是分别存储到单个文件中的,这些文件都是不会变化的,所以很利于缓存,同时操作系统也会把这些段文件缓存起来,以便更快的访问。
5 分片数量。ES在创建索引的时候默认的分片大小是5。我们可以在创建索引的时候指定分片数量。注意:分片一旦确定,就没法更改。这是因为
Es在创建分片之后,每次索引(动词)都会使用一个算法
shard= hash(routing) % number_of_primary_shards
来确定存储在哪一个分片上,如果更改分片的数量,那么之前所有的document都将无效。没法被routing。
官方给的建议:每个node上的分片数量不超过3个,因此我们如果想要更多的分片只能通过增加节点的方式。
分片不宜过大,也不宜过小。具体可以参考官网的文档和压力测试的结果来设定大小。
为了导入数据更快,可以在创建索引的时候把复制分片设置为0.导入数据结束之后再设置为想要的值。
6 routing。Elasticsearch的路由机制和它的分片机制有相似的地方,他们都是使用的hash算法。将具有相同hash值得文档放在一起。
情景分析:如果poi将全国所有的店面的信息放在es中,如果我们不指定路由,es会随机的将所有的文档存入分片中(数据很大,所以我们需要不止5个分片),现在我们想要查询上海地区所有的poi信息,es的做法是master收到请求,然后广播,每个节点查询数据,然后将数据交给通道节点合并,排序交给用户。这个会严重增加es的节点压力,网络负载。如果我们在查询的时候能明确的知道上海的poi数据在某一个节点上,我们只需要在查询的时候指定routing,es就会在routing指定的节点上查询,就可以避免不必要的资源浪费。也可以提高查询的速度。
我们可以在添加数据的时候指定某一个相同值得字段放在一起,比如上海的cityid=1,我们可以使用以下命令
Curl -XPUT localhost:9200/store/poi?routing=cityId -d '{
"cityId":"1",
"cityName":"上海"
}'
PUT test/_settings
{
"index.routing.allocation.include.size":"big,medium" #这个是把test索引的数据全部分配到big和medium节点
}
PUT test/_settings
{
"index.routing.allocation.exclude.size": "small" #与上面相反,把test索引的数据全部移除small节点
}
7 导入。在导入数据的时候建议先把副本设置为0.待导入完毕之后再设置为需要的数据。
curl -XPUT '192.168.5.112:9200/qinzi/_settings?pretty' -d '
{
"index" : {
"number_of_replicas" : 1
}
}'
导入的时候先把刷新的时间设置为-1(这样在索引的时候,数据对搜索不可见,就是在索引的时候,数据是没法实时查询的),等到索引结束之后,在设置为想要的时间,这个值可以可以通过api设置
curl -XPUT localhost:9200/test/_settings-d '{
"index" : {
"refresh_interval" :"-1"
}
}'
记得在索引之后改回来,不然之前索引的数据都没法查询。
8 节点状态监控。
9 segments优化 ES是基于lucene的,
curl -XPOST192.168.5.112:9200/baidu/_forcemerge?max_num_segments=1(强制性的把segments变为1)在合并的时候需要预留足够的磁盘空间,因为segments合并时候是采用一定的策略,把segments合并,但是旧的还会暂时存在的。
curl -XPOST 192.168.5.112:9200/baidu/_optimize?max_num_segments=1
发表评论
-
安装vscode,git之后,点击‘初始化储存库’报错
2023-04-10 14:44 493安装vscode,git之后,点击‘初始化储存库’报错 -
一个未了的心结
2022-09-27 14:16 87我有一个未了的心结, 就是攻克癌症, 我后面不管做啥, 挣了钱 ... -
马云的启示
2022-07-19 17:36 0我挺羡慕马云的, 不是羡慕他的财富, 而是羡慕他的机缘和经历。 ... -
SpringBoot+SpringCloud面试题整理
2021-07-08 16:18 1591什么是SpringBoot? 1、用 ... -
自定义png,端午快乐
2021-06-14 10:00 0ppt+工具。 https://www.iloveimg.co ... -
在线ps软件
2021-06-08 19:02 1771在线ps软件https://www.uupoop.com/ -
万种滋味在心头
2021-05-28 12:30 0万种滋味在心头, 苦涩在自己心里浇灌, 我为什么一定要拧着搞呢 ... -
梦有预测作用
2021-05-12 19:51 682梦有预测作用。 此时此刻的一幕, 梦里梦到过。 -
一些感想
2021-03-10 12:13 4当前阶段对我来说无疑是一个低谷, 我现在经历的所有的困苦、沉闷 ... -
云南华坪女子高中誓词
2021-03-10 11:48 923“我生来就是高山而非溪流,我欲于群峰之巅俯视平庸的沟壑。 我生 ... -
基于 Avue 的可视化表单设计器
2021-03-04 16:05 1050本项目是一款基于 Avue 的表单设计器,拖拽式操作让你快速构 ... -
等级保护和分级保护
2021-03-04 17:20 551等级保护和分级保护 -
当Swagger遇上YApi,瞬间高大上了!(一个好用的接口管理工具)
2021-03-03 14:15 551当Swagger遇上YApi,瞬间高大上了!(一个好用的接口管 ... -
从0到N建立高性价比的大数据平台
2021-03-03 13:14 353从0到N建立高性价比的大数据平台 -
大数据平台 - 数据采集及治理
2021-03-03 12:04 386大数据平台 - 数据采集 ... -
pdf2ppt-格式互转神器
2021-03-01 10:26 2http://pdftoword.55.la/pdf-to-p ... -
SpringBlade微服务开发平台
2021-02-25 14:06 365SpringBlade微服务开发平台: https://git ... -
avue-doc数据大屏解决方案
2021-02-25 14:04 338avue-doc数据大屏解决方案 https://www.ka ... -
heroku部署指南
2021-02-04 23:17 265heroku提供的免费网站可以用于构建个人网站,非常适用于实验 ... -
使用 Apache Atlas 进行数据治理
2021-02-02 16:16 435使用 Apache Atlas 进行数据治理
相关推荐
本人在工作期间主要负责公司的集群维护与ES的分布式平台搭建,在这期间总结了自己的一套关于ES集群的优化配置的准则,性能提升有3-5倍,希望可以帮到你
本人在实际的工作中,负责ES平台的搭建以及维护,在实际中总结的集群优化准则,所有集群通用,性能提升有3-5倍
这个版本的 Elasticsearch 针对性能和稳定性进行了优化,适用于大规模数据检索和分析场景。Elasticsearch 不仅支持英文分词,还特别强调了对中文的支持,因此在处理中文文档时,它通常会搭配使用专门的中文分词器。 ...
总结,Elasticsearch以其强大的全文搜索、分布式架构和易用性,成为现代大数据处理和分析的首选工具。通过深入理解和熟练运用Elasticsearch,开发者可以构建高效、弹性且易于维护的数据解决方案。
Elasticsearch是一个开源的全文搜索引擎,它以其高效、可扩展的特性被广泛应用于数据分析、日志分析、网站搜索等领域。...通过理解Term和Match查询的区别,可以更好地利用Elasticsearch进行文本检索,优化搜索效果。
**一、Elasticsearch简介** Elasticsearch是一个开源的全文搜索引擎,基于Apache Lucene构建,用Java编写。它简化了全文检索的过程,提供了一套RESTful API,使得操作变得直观简单。Elasticsearch不仅是一个搜索...
**Elasticsearch Analysis IK 7.10.0 分词器详解** Elasticsearch 分词器是搜索引擎核心组件之一,负责将输入的文本拆分成可搜索的独立单元——词语。在中文环境中,这个过程尤为重要,因为中文句子由多个汉字组成...
在IT领域,尤其是在搜索引擎优化和大数据分析中,Elasticsearch(ES)是一个广泛使用的开源全文检索引擎。它基于Lucene库,提供了分布式、实时、高可用性以及容错能力的数据存储和搜索解决方案。本篇文章将重点讲解...
总结来说,Elasticsearch数据导出工具是一个强大的数据迁移工具,它通过Java实现了与MySQL的无缝连接,允许用户灵活地在Elasticsearch和MySQL之间移动数据,同时也支持将数据保存在本地文件系统,以适应多样化的数据...
本文档总结了 34 道 Elasticsearch 面试题和答案,涵盖了 Elasticsearch 的基础概念、索引架构、集群管理、性能优化、倒排索引、master 选举等多个方面。 一、Elasticsearch 基础概念 1. 什么是 Elasticsearch?...
总结,"Chrome浏览器查看elasticsearch head插件"是一个实用的工具,它为Elasticsearch的管理和监控提供了便捷的Web界面,使得非开发人员也能轻松理解和操作ES集群。通过遵循正确的安装步骤,用户可以充分利用这个...
总结来说,这个压缩包提供了一套完整的 Elasticsearch 环境,包括最新的 7.14.0 版本、必备的分词器支持以及方便的可视化工具 Head 插件,配合 PHP 客户端,可以快速搭建起一个功能完备的全文搜索引擎系统。...
Elasticsearch(简称ES)是一款基于Lucene的开源、分布式全文搜索引擎。它以其高效、灵活、可扩展的特点,广泛应用于日志分析、实时监控、数据搜索等多个领域。在版本7.10.2中,Elasticsearch持续优化了性能,提升了...
**谷歌浏览器Elasticsearch Head插件详解** 在大数据时代,Elasticsearch作为一款强大的开源搜索引擎,因其高效、灵活和可扩展性而广受青睐。它主要用于全文检索、数据分析以及实时日志收集等领域。为了便于管理和...
总结,Elasticsearch 8.1.2是适用于Windows x86_64环境的大数据搜索和分析引擎,其强大的功能和易用性使其成为大数据领域的热门选择。正确安装和配置Elasticsearch,结合其他Elastic Stack组件,可以帮助企业高效...
总结来说,Elasticsearch是一本全面的实战指南,它从基础到高级,逐步深入地引导读者掌握Elasticsearch的使用和管理技巧。无论你是Elasticsearch的新手还是有经验的开发者,这本书都能帮助你更好地使用Elasticsearch...
es, err := elasticsearch.NewDefaultClient() if err != nil { panic(err) } res, err := es.Index(index, "", &doc, nil) if err != nil { panic(err) } defer res.Body.Close() if res.IsError() {...
Elasticsearch(ES)作为一个开源的全文搜索引擎,因其强大的搜索功能和分布式特性而备受青睐。然而,对于中文这种复杂的语言,分词是搜索引擎理解文本的关键步骤。本文将详细介绍elasticsearch-analysis-ik-7.10.2...
**Elasticsearch Head 插件详解** ...总结来说,Elasticsearch Head 插件是一款强大的工具,尤其适合开发和测试环境。通过它,我们可以轻松管理和维护 Elasticsearch 集群,提升工作效率,同时为日常运维提供了便利。