1.查看状态
Elasticsearch启动后是一个 http 服务,默认在本地的 9200 端口。可以通过 curl 或者 Kibana控制台进行操作。使用 curl 的命令格式如下:
$ curl -X<VERB> '<HOST>:<PORT>/<PATH>?<QUERY_STRING>' -d '<BODY>'
VERB:HTTP 方法,如 GET、POST、PUT、HEAD、DELETE PROTOCOL:http 或者 https 协议
HOST:Elasticsearch集群中的任何一个节点的主机名,如果是在本地的节点,那么就叫localhost
PORT:Elasticsearch HTTP服务所在的端口,默认为 9200
PATH: API路径
QUERY_STRING:一些可选的查询请求参数,例如?pretty参数将使请求返回更加美观易读的JSON数据
BODY:一个JSON格式的请求主体(如果请求需要的话)
查看常用方法
http://192.168.192.128:9200/_cat
查看集群健康状态
http://192.168.192.128:9200/_cat/health?v
curl -XGET ‘http://192.168.192.128:9200/_cat/health?v’
集群状态:
绿色代表一切正常(集群功能齐全)。
黄色意味着所有节点都是可用的,但是某些节点没有备份。
红色则代表因为某些原因,某些节点不可用。
注意,即使是集群状态是红色的,集群仍然是部分节点可用的(它仍然会利用可用的分片来响应搜索请求),但是你需要尽快修复它,避免丢失数据。
查看节点信息:* 表示master节点
curl -XGET ‘http://192.168.192.129:9200/_cat/nodes?v’
2.索引
查看所有索引
curl -XGET ‘http://192.168.192.130:9200/_cat/indices?v’
创建索引
curl -XPUT ‘http://192.168.192.128:9200/test2?pretty’
创建的索引test2是1分片1副本
# 创建索引并分片
curl -XPUT -H "Content-Type:application/json" 'http://192.168.192.128:9200/test3?pretty' -d '{"settings":{"number_of_shards":5,"number_of_replicas":1}}'
删除索引
curl -XDELETE ‘http://192.168.192.128:9200/test2?pretty’
3.文档
Method | URL | remarks |
---|---|---|
PUT | ip:9200/索引名称/类型名称/文档ID | 添加文档 |
PUT | ip:9200/索引名称/类型名称/文档ID/_update | 修改文档 |
DELETE | ip:9200/索引名称/类型名称/文档ID | 删除文档 |
GET | ip:9200/索引名称/类型名称/文档ID | 根据文档ID获取文档 |
POST | ip:9200/索引名称/类型名称/_search | 查询文档 |
# 添加文档
curl -XPUT -H "Content-Type:application/json" 'http://192.168.192.128:9200/test3/user/1?pretty' -d '{"name":"admin"}'
curl -XPUT -H "Content-Type:application/json" 'http://192.168.192.128:9200/test3/user/2?pretty' -d '{"name":"yzm"}'
添加文档时,如果索引不存在,那么es将会自动地创建这个索引
查询文档
curl -XGET ‘http://192.168.192.128:9200/test3/user/2?pretty’
# 修改文档
curl -XPUT -H "Content-Type:application/json" 'http://192.168.192.128:9200/test3/user/1?pretty' -d '{"name":"admin被修改了"}'
如果文档ID已存在则是修改操作
修改文档结构:增加age字段
curl -XPOST -H "Content-Type:application/json" 'http://192.168.192.128:9200/test3/user/1/_update?pretty' -d '{"doc":{"name":"admin","age":20}}'
curl -XPOST -H "Content-Type:application/json" 'http://192.168.192.128:9200/test3/user/2/_update?pretty' -d '{"doc":{"age":21}}'
通过script修改文档
curl -XPOST -H "Content-Type:application/json" 'http://192.168.192.128:9200/test3/user/1/_update?pretty' -d '{"script":"ctx._source.age += 5"}'
删除文档
curl -XDELETE ‘http://192.168.192.128:9200/test3/user/2?pretty’
_search查询
# 添加一些文档
curl -XPUT -H "Content-Type:application/json" 'http://192.168.192.128:9200/test3/user/2?pretty' -d '{"name":"yzm", "age":21}'
curl -XPUT -H "Content-Type:application/json" 'http://192.168.192.128:9200/test3/user/3?pretty' -d '{"name":"hzw", "age":20}'
# 查询所有
curl -XPOST -H "Content-Type:application/json" 'http://192.168.192.128:9200/test3/user/_search?pretty' -d '
{
"query": { "match_all": {} }
}
'
# match_all:匹配所有
{
"query": { "match_all": {} }
}
# 返回搜索结果集的第一文档,size默认是10
{
"query": { "match_all": {} },
"size": 1
}
# from从第几个开始,默认是0,配合size可以实现分页效果
{
"query": { "match_all": {} },
"from": 1,
"size": 1
}
# sort排序 asc升序 desc降序
{
"query": { "match_all": {} },
"sort": { "age": { "order": "desc" } }
}
# _source:默认搜索结果是返回整个文档的所有字段,但可以通过_source指定返回部分字段
{
"query": { "match_all": {} },
"_source": ["name", "age"]
}
# 只返回age=20的数据
{
"query": { "match": { "age": 20 } }
}
# 布尔查询,所有条件都为真,即下面返回的数据包含name=admin和age=18
{
"query": {
"bool": {
"must": [
{ "match": { "name": "admin" } },
{ "match": { "age": 18 } }
]
}
}
}
# 布尔查询,所有条件都为假,即下面返回的数据不能包含name=admin,也不能包含age=18
{
"query": {
"bool": {
"must_not": [
{ "match": { "name": "admin" } },
{ "match": { "age": 18 } }
]
}
}
}
# 布尔查询,任意条件为真即可,即下面返回的数据包含name=admin,或者包含age=18
{
"query": {
"bool": {
"should": [
{ "match": { "name": "admin" } },
{ "match": { "age": 18 } }
]
}
}
}
# 布尔组合,返回name=admin但age!=18的数据
{
"query": {
"bool": {
"must": [
{ "match": { "name": "admin" } }
]
"must_not": [
{ "match": { "age": 18 } }
]
}
}
}
# 批量添加文档
curl -XPOST -H "Content-Type:application/json" 'http://192.168.192.128:9200/test3/user/_bulk?pretty' -d '
{"index":{"_id":"4"}}
{"name":"zhangsan", "age":17}
{"index":{"_id":"5"}}
{"name":"lisi", "age":18}
'
# 批量操作
curl -XPOST -H "Content-Type:application/json" 'http://192.168.192.128:9200/test3/user/_bulk?pretty' -d '
{"update":{"_id":"4"}}
{"doc":{"name":"zhangdada","age":21}}
{"delete":{"_id":"5"}}
'