ElasticSearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful API 的 web 接口.
Elasticsearch 没有典型意义的事务.
Elasticsearch 是一种面向文档的数据库
Elasticsearch 没有提供授权和认证特性
– 实时分析
– 分布式实时文件存储,并将每一个字段都编入索引
– 文档导向,所有的对象全部是文档
– 高可用性,易扩展,支持集群(Cluster)、分片和复制(Shards 和 Replicas)
– 接口友好,支持 JSON
– Node: 装有一个 ES 服务器的节点。
– Cluster: 有多个Node组成的集群
– Document: 一个可被搜素的基础信息单元
– Index: 拥有相似特征的文档的集合
– Type: 一个索引中可以定义一种或多种类型
– Filed: 是 ES 的最小单位,相当于数据的某一列
– Shards: 索引的分片,每一个分片就是一个 Shard
– Replicas: 索引的拷贝
1. 确定要安装集群的主机数量,设置主机名和静态ip
2. 把所有主机名和对应ip 写进 /etc/hosts ,发送给所有主机(集群中的所有节点要相互能够 ping 通)
3. 安装JDK,Elasticsearch 要求至少 Java 7,一般推荐使用 OpenJDK 1.8(所有主机)
yum install -y java-1.8.0-openjdk
4. 安装 ES(所有主机)
rpm –ivh elasticsearch-2.3.4-1.noarch
5. 修改配置文件 (不同主机有区别)
vim /etc/elasticsearch/elasticsearch.yml
17 行 cluster.name: nsd123 ------(集群名称配置要求完全一致)
23 行 node.name: es1 -----------(为当前节点标识,应配置本机的主机名)
54 行 network.host: 0.0.0.0
68 行 discovery.zen.ping.unicast.hosts: ["es1", "es2", "es3"] ----(为集群节点机器,不需要全部配置)
6. 启动服务,设置自启动
systemctl enable elasticsearch
systemctl start elasticsearch
查看 9200 和 9300 端口 ,ss -ntulp |grep 9200
7.验证集群,使用 ES 内置字段 _cluster/health
curl http://192.168.4.11:9200/_cluster/health?pretty
status“ : ”green“ 集群状态,绿色为正常,黄色表示有问题但不是很严重,红色表示严重故障
curl 常用参数介绍
– -A 修改请求 agent
– -X 设置请求方法
– -i 显示返回头信息
索引一个文档;PUT。
检索文档,检索文档的一部分;GET,以及_source参数。
检索文档是否存在;HEAD(返回200或者404)。
更新整个文档;PUT。
创建新的文档;POST(冲突时返回409)。
删除文档;DELETE(返回200或者404)。
文档局部更新;POST,以及_update参数。
检索多个文档;_mget参数指令,docs数组参数。
批量更新;_bulk参数指令,可以包含create,index,update,delete动作。
三 ES插件的使用
head 插件: – 它展现ES集群的拓扑结构,并且可以通过它来进行索引(Index)和节点(Node)级别的操作
– 它提供一组针对集群的查询API,并将结果以json和表格形式返回
– 它提供一些快捷菜单,用以展现集群的各种状态
kopf 插件: – 是一个ElasticSearch的管理工具
– 它提供了对ES集群操作的API
bigdesk 插件: – 是elasticsearch的一个集群监控工具
– 可以通过它来查看es集群的各种状态,如:cpu、内存使用情况,索引数据、搜索情况,http连接数等
查看安装的插件 : /usr/share/elasticsearch/bin/plugin list
安装插件 : /usr/share/elasticsearch/bin/plugin install file:///root/head.zip
/usr/share/elasticsearch/bin/plugin install file:///root/kopf.zip
这里必须使用 url 的方式进行安装,如果文件在本地,我们也需要使用 file:// 的方式指定路径,例如文件在/tmp/xxx 下面,我们要写成 file:///tmp/xxx 删除使用 remove 指令
四 RESTful API 调用
例子:创建一个索引 ,并设置分片数量与副本数量
curl -XPOST 'http://192.168.4.13:9200/tedu/' -d '{
"setting": {
"index": {
"number_of_shards": 5,
"number_of_replicas":1
}
}
}'