Elasticsearch之基础使用

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.文档

MethodURLremarks
PUTip:9200/索引名称/类型名称/文档ID添加文档
PUTip:9200/索引名称/类型名称/文档ID/_update修改文档
DELETEip:9200/索引名称/类型名称/文档ID删除文档
GETip:9200/索引名称/类型名称/文档ID根据文档ID获取文档
POSTip: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"}}
'

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值