作者:鱼咸4406 | 来源:互联网 | 2023-06-28 13:31
背景:线上一直在跑es的2.x版本,了解到官网已经推出5.x版本,看着官网的介绍性能如何如何,手痒就想小试一下,对比一看,和之前的版本出入还是非常大的,非常期待调研测试结果。下面性能对比是官网的介绍,
背景:线上一直在跑es的2.x版本,了解到官网已经推出5.x版本,看着官网的介绍性能如何如何,手痒就想小试一下,对比一看,和之前的版本出入还是非常大的,非常期待调研测试结果。下面性能对比是官网的介绍,看样子很是牛逼。今天开始写一个调研5.x的系列。
性能对比
1. 同样的机器(硬件、数量)及集群结构(Master Node、Data Node)
2. 同样的索引结构和分片数量
3. 基本一致的查询语句(ES5语法有所变化,所以query没有完全一致)
4. 同样的数据量
5. 同样的流量
ES 5.X集群的 CPU Usage 约为ES2集群的 3/4
ES 5.X集群的 Search Latency 约为ES2集群的 2/3
Elasticsearch是一个基于Apache Lucene(TM)的开源搜索引擎.Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能.
几个重要的概念:
索引:一个索引就是一个拥有几分相似特征的文档的集合,索引就像数据库。
类型:一个类型是一个索引的一个逻辑上的分类/分区。
文档:一个文档是一个可被索引的基础信息单元。
字段(field):文档的一部分,包含名称和值两部分。
词(term):一个搜索单元,表示文本中的一个词。
标记(token):表示在字段文本中出现的词,由这个词的文本、开始和结束偏移量以及类型组成。
映射(mapping)所有文档写进索引之前都会先进行分析,如何将输入的文本分割为词条、哪些词条又会被过滤,这种行为叫做映射(mapping)
分片和复制:将索引划分成多份的能力,这些份就叫做分片。
gateway:代表 es 索引的持久化存储方式,es默认是先把索引存放到内存中,当内存满了时再持久化到硬盘。
river:代表 es 的一个数据源,也是其它存储方式(如:数据库)同步数据到es的一个方法。
discovery:代表 es 的自动发现节点机制,es是一个基于 p2p 的系统,它先通过广播寻找存在的节点,再通过多播协议来进行节点之间的通信,同时也支持点对点的交互。
Transport:代表es 内部节点或集群与客户端的交互方式,默认内部是使用 tcp 协议进行交互,同时它支持 http 协议(json格式)、thrift、servlet。
学习一个软件,先从安装部署熟悉,es也不例外,下面安装部署下:
本地测试机:
192.168.80.11
192.168.80.13
环境:CentOS Linux release 7.2.1511 (Core)
安装java,省略。java version "1.8.0_112"
安装ES
新建非root用户,如果使用root用户启动会报错,新建后对其赋予权限
groupadd es
useradd es -g es -p 1qaz@WSX
以下安装在es用户下操作。
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.1.1.zip
unzip elasticsearch-5.1.1.zip
cd elasticsearch-5.1.1
chown -R es.es elasticsearch-5.1.1
运行Elasticsearch
./bin/elasticsearch
./bin/elasticsearch -d #后台运行
tail -f logs/elasticsearch.log #查看日志
jps 验证
curl -X GET http://localhost:9200/ 或者 curl 'http://192.168.80.11:9200/?pretty'
几个重要的配置文件
#/etc/sysconfig/elasticsearch 配置elasticsearch环境变量
#/etc/elasticsearch/elasticsearch.yml 配置elasticsearch集群
#/etc/elasticsearch/jvm.options 配置elasticsearch的jvm参数
#/etc/elasticsearch/log4j2.properties 配置elasticsearch日志参数
配置文件
chown -R es.es /export/es
cat elasticsearch.yml
node.name: node-1
path.data: /export/es/data
path.data: /export/es/logs
network.host: 192.168.80.11
http.port: 9200
添加
http.cors.enabled: true
http.cors.allow-origin: "*"
注意事项:
1.Java客户端所在的Elasticsearch版本必须与集群中其他节点一致,否则,它们可能互相无法识别。
2.bootstrap checks failed;max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]
解法:
vi /etc/sysctl.conf
vm.max_map_count=262144
fs.file-max=102400
sysctl -a生效
sysctl -p
或者sysctl -w vm.max_map_count=262144直接生效
3.文件描述符
/etc/security/limits.conf文件,添加或修改如下行:
* hard nofile 102400
* soft nofile 102400
未完待续……
【原创】原创文章,更多关注敬请关注微信公众号。