elasticsearch应用之安装(一)
一、Elasticsearch 基本术语
1.1 文档(Document)、索引(Index)、类型(Type)文档三要素
文档(Document)
文档,在面向对象观念就是一个对象。在 ES 里面,是一个大 JSON 对象,是指定了唯一 ID 的最底层或者根对象。文档的位置由 _index、_type 和 _id 唯一标识。
索引(Index)
索引,用于区分文档成组,即分到一组的文档集合。索引,用于存储文档和使文档可被搜索。比如项目存索引 project 里面,交易存索引 sales 等。
类型(Type)
类型,用于区分索引中的文档,即在索引中对数据逻辑分区。比如索引 project 的项目数据,根据项目类型 ui 项目、插画项目等进行区分。
1.2 集群(Cluster)、节点(Node)、分片(Shard)分布式三要素
二、Elasticsearch 工作原理
2.1 如何健康检查
集群名,集群的健康状态
GET http://127.0.0.1:9200/_cluster/stats
status 字段是需要我们关心的。状态可能是下列三个值之一:
green
所有的主分片和副本分片都已分配。你的集群是 100% 可用的。
yellow
所有的主分片已经分片了,但至少还有一个副本是缺失的。不会有数据丢失,所以搜索结果依然是完整的。高可用会弱化把 yellow 想象成一个需要及时调查的警告。
red
至少一个主分片(以及它的全部副本)都在缺失中。这意味着你在缺少数据:搜索只能返回部分数据,而分配到这个分片上的写入请求会返回一个异常。
active_primary_shards 集群中的主分片数量
active_shards 所有分片的汇总值
relocating_shards 显示当前正在从一个节点迁往其他节点的分片的数量。通常来说应该是 0,不过在 Elasticsearch 发现集群不太均衡时,该值会上涨。比如说:添加了一个新节点,或者下线了一个节点。
initializing_shards 刚刚创建的分片的个数。
unassigned_shards 已经在集群状态中存在的分片。
安装:
下载地址:https://www.elastic.co/downloads/elasticsearch
历史版本下载:https://www.elastic.co/cn/downloads/past-releases#elasticsearch
lunix:
1. 下载ElasticSearch 2.3.3
2. 安装JDK 1.8.0以上版本
3. ElasticSearch 安装时会出现 Exception in thread "main" java.lang.RuntimeException: don't run elasticsearch as root.
这是出于系统安全考虑设置的条件。由于ElasticSearch可以接收用户输入的脚本并且执行,为了系统安全考虑,
建议创建一个单独的用户用来运行ElasticSearch
解决方法:
因为安全问题elasticsearch 不让用root用户直接运行,所以要创建新用户
建议创建一个单独的用户用来运行ElasticSearch
useradd elsearch -g elsearch -p elasticsearch
这条语句不推荐使用,-p设置密码要求使用加密过后的密码,用这条语句以后没有办法使用elsearch的密码,还是用passwd方便一些
1,创建elsearch用户组及elsearch用户
groupadd elsearch
useradd elsearch -g elsearch -p elasticsearch
2,更改elasticsearch文件夹及内部文件的所属用户及组为elsearch:elsearch
chown -R elsearch:elsearch elasticsearch
elasticsearch
为你elasticsearch的目录名称
3,切换到elsearch用户再启动
su elsearch #切换账户
cd elasticsearch/bin #进入你的elasticsearch目录下的bin目录
./elasticsearch
4. ElasticSearch 运行${ES_HOME}/bin/elasticsearch后,可能出现localhost:9200 或者127.0.0.1:9200都能访问的情况,但是根据IP:9200就是访问不了。 此时修改:elasticsearch.yaml文件
network.host: 10.0.15.30 即可根据IP访问
5,之后如果再启动的话(如果是以root权限登录服务器),只需要执行切换账户,然后运行elasticsearch就可以了
su elsearch #切换账户
cd elasticsearch/bin #进入你的elasticsearch目录下的bin目录
./elasticsearch
ElasticSearch后台启动命令
./elasticsearch -d
./elasticsearch –d #在后台运行Elasticsearch
./elasticsearch -d -Xmx2g -Xms2g #后台启动,启动时指定内存大小(2G)
./elasticsearch -d -Des.logger.level=DEBUG #可以在日志中打印出更加详细的信息。
查看后台命令是否启动成功
ps aux|grep elasticsearch
通过后台不中断命令进行启动 :
- nohup ./elasticsearch &
查看是否启动
nestat -anp |grep 9200
es不能在root用户下安装运行:
启动报错:
在其他用户下运行:
报错表示用户没有权限:
解决方法:
在root用户下为其他用户授权:
在重启ES ok
在浏览器中输入:127.0.0.1:9200 查看
在本地浏览器IP:9200无法访问
解决方法:
使用新的linux版本,就不会出现此类问题了。
查看状态:
ps aux|grep elasticsearch
netstat -anp|grep 9200
win:
localhost:9200/127.0.0.1:9200能访问,IP:9200无法访问修改配置文件config/elasticsearch.yml
network.host: 192.168.1.133
http.port: 9200
discovery.zen.ping.unicast.hosts: ["192.168.1.133"]
discovery.zen.minimum_master_nodes: 3
或者将其修改为:
network.host: 0.0.0.0
http.port: 9200
注:yaml格式冒号后面是有空格。
浏览器地址输入:http://localhost:9100
索引测试:
get http://localhost:9200/_search
安装图形化界面:
https://www.cnblogs.com/codehello/articles/16396288.html
1,org.elasticsearch.client.transport.NoNodeAvailableException: None of the configured nodes are available: [{#transport#-1}{127.0.0.1}{127.0.0.1:9300}]
at org.elasticsearch.client.transport.TransportClientNodesService.ensureNodesAreAvailable(TransportClientNodesService.java:326) ~[elasticsearch-2.4.4.jar:2.4.4]
at org.elasticsearch.client.transport.TransportClientNodesService.execute(TransportClientNodesService.java:223) ~[elasticsearch-2.4.4.jar:2.4.4]