配置好java环境变量
从官网下载elasticsearch,解压,进入Elasticsearch目录
在linux环境下输入以下执行命令即可启动:
bin/elasticsearch
默认启动外网是无法访问的,需要对配置文件进行修改:
vi config/elasticsearch.yml
添加如下内容:
network.host: 0.0.0.0
http.port: 8086
关闭es再次启动:(通常来说会遇到如下错误,因为es对资源需求量较大,一般linux默认配置并没有达到es资源需求)
【报错1】max file descriptors [4096] for elasticsearch process likely too low, consider increasing to at least [65536]
需要修改系统文件/etc/security/limits.conf并添加(或修改)如下行
* soft nofile 65536
* hard nofile 131072
其中的*号代表该配置对所有用户适用
注意!修改完后再启动es会发现错误依旧存在,这时候应先退出登录(windows适用putty远程登录linux的用户应退出putty),再次登录,方可生效。
【报错2】max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]
需要修改系统文件/etc/sysctl.conf并添加(或修改)如下行
vm.max_map_count=655360
保存退出后,需要运行如下命令使其生效:
sysctl -p
此时我们通过浏览器打开页面,就能访问ES了:
如果我们配置了特殊的端口(例如本文中配置为8086,而不是默认的9200)应该如何访问呢?我们以python为例:
from datetime import datetime
from elasticsearch import Elasticsearch
es = Elasticsearch(hosts="roc-3:8086")
index = 'my-index3'
doc_type = "test-type"
id_num = 01
es.indices.create(index=index)
es.index(index=index,
doc_type=doc_type,
id=id_num,
body={"any": "data01",
"timestamp": datetime.now(),
"quantity": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]}
)
res = es.get(index=index, doc_type=doc_type, id=id_num)
for k in res.keys():
print(k, res[k])
只需要把默认的
es = Elasticsearch()
改成
es = Elasticsearch(hosts="roc-3:8086")
即可