最近需要用到elasticsearch搜索引擎,所以搜集了很多相关资料,先放在这里(未详细整理)
一、步骤总结:(linux环境下)
1. 安装
(1)下载elasticsearch安装包:http://www.elasticsearch.org/download/
(2) tar xzvf elasticsearch-6.2.2.tar.gz
放在linux自建目录下后,解压安装包
(3)修改配置文件,./config/elasticsearch.yml
配置文件中
//新增:
//安装完成但是发现启动不了时,修改这两个参数(参考文档 https://www.jianshu.com/p/89f8099a6d09)
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
//修改:
//这里之前是被注释的两句,去掉注释后elasticsearch才能支持curl访问
//注意network.host: 后面需要加空格
network.host: 0.0.0.0
http.port: 9200
(4)启动elasticsearch ./bin/elasticsearch
如果加上 -d
参数则可以启动守护进程 (./bin/elasticsearch -d
)
2. ik插件安装(待更新)
3. elasticsearch基本操作
elasticsearch使用了restful api,GET
请求表示查询 POST
请求表示新建
例子:存储一个员工目录
在Elasticsearch中,文档归属于一种类型(type),而这些类型存在于索引(index)中。
//(1)查询当前有多少节点
curl -H "Content-Type: application/json" -XGET 'http://localhost:9200/_count?pretty' -d '
{
"query": {
"match_all": {}
}
}'
创建员工目录需要进行的操作:
a. 为每个员工的文档(document)建立索引,每个文档包含了相应员工的所有信息。
b. 每个文档的类型为employee。
c. employee类型归属于索引megacorp。
d. megacorp索引存储在Elasticsearch集群中。
这些步骤只需要下面这一个post请求即可完成。
//(2)提交一个数据, post内容为json数据
//员工1
curl -H "Content-Type: application/json" -XPOST 'http://localhost:9200/megacorp/employee/1' -d '
{
"first_name" : "John",
"last_name" : "Smith",
"age" : 25,
"about" : "I love to go rock climbing",
"interests": [ "sports", "music" ]
}'
//员工2
curl -H "Content-Type: application/json" -XPOST 'http://localhost:9200/megacorp/employee/2' -d '
{
"first_name" : "Jane",
"last_name" : "Smith",
"age" : 32,
"about" : "I like to collect rock albums",
"interests": [ "music" ]
}'
//员工3
curl -H "Content-Type: application/json" -XPOST 'http://localhost:9200/megacorp/employee/3' -d '
{
"first_name" : "Douglas",
"last_name" : "Fir",
"age" : 35,
"about": "I like to build cabinets",
"interests": [ "forestry" ]
}'
//(3)查询内容,查询员工id为1的信息 'megacorp/employee/1'
curl -H "Content-Type: application/json" -XGET 'http://localhost:9200/megacorp/employee/1'
//(4)'_search' 搜索功能, 搜索内容中"about"字段包含"rock"的记录
curl -H "Content-Type: application/json" -XGET 'http://localhost:9200/megacorp/employee/_search' -d '
{
"query" : {
"match" : {
"about" : "rock"
}
}
}'
以上是基本的操作,还有更多的搜索操作例如过滤、聚合等,可以参考下面的elasticsearch权威指南。
4. Python代码导入数据(待学习)
二、 参考文档
1. elasticsearch权威指南中文版
超级棒的一个文档,看过之后基本就会用elasticsearch了,入门必看!
https://es.xiaoleilu.com/010_Intro/00_README.html
2. elasticsearch安装过程中遇到问题的解决
(1)这里我遇到了./bin/elasticsearch
无法启动的问题,需要修改两个配置参数,下面的文档中有说明:
https://www.jianshu.com/p/89f8099a6d09
(2)curl请求的时候遇到 {"error":"Content-Type header [application/x-www-form-urlencoded] is not supported 的错误,解决方法如下文档:
http://blog.csdn.net/dtiove/article/details/78870607
3. 分词插件ik详细安装步骤
https://www.cnblogs.com/zlslch/p/6440373.html