安装:
安装方式很多先以一种为主 后期会补上docker安装等方式
官网下载
下载后解压缩
我是下载的macOS版本
直接解压
tar -xvf elasticsearch-7.13.2-darwin-x86_64.tar.gz
cd 进去bin目录
./elasticsearch 启动 注意:启动es需要先安装jdk
启动好了 就一顿刷日志说明没啥问题
还要注意标有 http 地址 ( 192.168.8.112
) 和端口 ( 9200
) 信息的行,我们的节点可以从这些信息访问。默认情况下,Elasticsearch 使用端口9200
来提供对其 REST API 的访问。如有必要,可配置此端口。
启动的话可以通过加参数来设置自己的节点名称
./elasticsearch -Ecluster.name=my_cluster_name -Enode.name=my_node_name
重启的时候出现
failed to obtain node locks 这个错误的话。可以查看下进程 是不是有没被kill的es进程
有的话直接kill -9 干掉就行
到这边的话安装就算是告一段落了。接下来我们来看看怎么使用它
使用:
官网扒一点东西过来。。。。哈哈哈哈哈
Elasticsearch 提供了一个非常全面且强大的 REST API,您可以使用它与您的集群进行交互。可以使用 API 完成的几件事如下:
- 检查您的集群、节点和索引运行状况、状态和统计信息
- 管理您的集群、节点和索引数据和元数据
- 对索引执行 CRUD(创建、读取、更新和删除)和搜索操作
- 执行高级搜索操作,例如分页、排序、过滤、脚本编写、聚合等
执行
http://127.0.0.1:9200/_cat/health?v
可以看到你本地启动的es实例
首先的话先看下status。正常情况下是green
- 绿色 - 一切都很好(集群功能齐全)
- 黄色 - 所有数据都可用,但一些副本尚未分配(集群功能齐全)
- 红色 - 由于某种原因,某些数据不可用(集群部分功能)
注意:当集群为红色时,它将继续处理来自可用分片的搜索请求,但您可能需要尽快修复它,因为存在未分配的分片。
接下来会请求几个链接来看看es的一些基本情况
http://localhost:9200/_cat/nodes?v&pretty 可以查看节点信息
http://localhost:9200/_cat/indices?v&pretty 查看索引
第一次的话因为没有创建所以返回
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
先创建索引
http://localhost:9200/索引名称?pretty&pretty
这个时候在查询的话就有索引数据了(默认的话是创建5个主分片和1个副本),查出来以后会看到health是yellow 说明还未分配
接下来就是给索引塞个值
http://localhost:9200/customer1/doc/1?pretty&pretty
body :
{
"name":"aze"
}
http://localhost:9200/customer1/doc/1?pretty&pretty 查询看看就可以看到我们先前推的值了
Elasticsearch 不要求您先显式创建索引,然后才能将文档索引到其中。在前面的示例中,如果客户索引事先不存在,Elasticsearch 将自动创建它。
删除索引的话就是比较简单
http://localhost:9200/索引名称?pretty&pretty delete请求
更新原有数据只需请求相同url body替换就行,如果不想指定id应该有post请求而不是put,这样的话就会随机生成一个id(所以es还是严格按照rest接口的)
下面的内容是更新整个文档
http://localhost:9200/customer1/doc/1/_update?pretty&pretty 可以对整个文档进行更新,过程是删除旧的doc然后在一次性索引一个新文档
Elasticsearch 提供了在给定查询条件(如SQL UPDATE-WHERE
语句)的情况下更新多个文档的能力。见docs-update-by-queryAPI
删除数据也是比较简单的
http://localhost:9200/customer1/doc/2?pretty&pretty delete请求
官网般的 请参阅_delete_by_queryAPI以删除与特定查询匹配的所有文档。值得注意的是,使用 Delete By Query API 删除整个索引比删除所有文档要高效得多。
这边需要说个点,就是body的条件的用法(其他应该都类似)
http://localhost:9200/索引/_delete_by_query?pretty post请求
body:
{
"query": {
"match": {
"匹配key": "匹配value"
}
}
}
es是提供批量操作的api,这边的话就说一个,就是批量更新 你需要把更新的所有数据放进去(使用_bulk更新的话) ,因为是不支持增量更新