elasticsearch 安装使用
Elasticsearch 是一个分布式可扩展的实时搜索和分析引擎,一个建立在全文搜索引擎 Apache Lucene(TM) 基础上的搜索引擎.当然 Elasticsearch 并不仅仅是 Lucene 那么简单,它不仅包括了全文搜索功能,还可以进行以下工作:
-
分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索。
-
实时分析的分布式搜索引擎。
-
可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据。
安装并运行ES(CentOS7 x64 测试成功)
1.1 安装JDK,需要JDK1.8以上
java安装请网上找一下,可以输入命令查看对应的jdk版本
java -version
1.2 下载对应版本的压缩版
到官方网站找到最新的版本,下载
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.6.2.tar.gz
解压
tar -xvf elasticsearch-6.6.2.tar.gz
1.3 启动单节点ES
cd elasticsearch-6.5.2/bin ./elasticsearch
1.4 测试启动
默认端口是9200,如果返回ES的一些信息说明启动成功
curl 'http://localhost:9200/?pretty'
返回类似
{ "name": "10.202.xxx.xx:9300", "cluster_name": "xxxxx", "cluster_uuid": "eWOew3jRR1aeNYW4hMy2Eg", "version": { "number": "5.4.1", "build_hash": "2cfe0df", "build_date": "2017-05-29T16:05:51.443Z", "build_snapshot": false, "lucene_version": "6.5.1" }, "tagline": "You Know, for Search" }
1.5 Kibana 安装
Kibana是一个开源的分析和可视化平台,设计用于和Elasticsearch一起工作。
用Kibana来搜索,查看,并和存储在Elasticsearch索引中的数据进行交互。
可以轻松地执行高级数据分析,并且以各种图标、表格和地图的形式可视化数据。
Kibana使得理解大量数据变得很容易。它简单的、基于浏览器的界面使你能够快速创建和共享动态仪表板,实时显示Elasticsearch查询的变化。
下载解压
启动并访问
http://localhost:5601
配置绑定网址
vim /config/kibaba.yml server.host: "0.0.0.0"
重启
问题
【1】max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
原因:需要设置最大打开文件
解决1:官方的
解决2: 编辑,并加入下面的内容 /etc/security/limits.conf
* soft nofile 65536 * hard nofile 131072 * soft nproc 4096 * hard nproc 4096
备注:* 代表Linux所有用户名称(比如 hadoop),保存、退出、重新登录才可生效
【2】max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
解决: 最大虚拟内存太小,修改: /etc/sysctl.conf
vm.max_map_count=655360
执行命令生效
sysctl -p
【3】外部无法访问
解决:默认没有绑定IP,需要配置可以IP访问
network.host: 0.0.0.0
CentOS防火墙
#临时关闭,重启会开启 systemctl stop firewalld.service #禁用,重启也不会启动 systemctl disable firewalld.service
DSL
3.1 查询所有
{ "query": { "match_all": {} } }
3.2 聚合aggs
terms //分类聚合 sum //求和 "aggs":{ "passZoneCode_list":{ //名字随便起 "terms":{ //分类聚合 "field":"passZoneCode", //统计的字段 "size":200 }, "aggs":{ "planArriveVotes_sum":{//名字随便起 "sum":{ //求和 "field":"planArriveVotes" //统计的字段 } } } } }
下一次将会写一下ES的Java api的连接客户端