Elasticsearch入门之常见请求学习笔记

省略掉环境搭建的流程选择容器进行操作

  1. docker pull elasticsearch:6.5.4
  2. docker run -d --name es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:6.5.4

快速启动一个elasticsearch的容器后,进入容器内操作,可以看到成功访问es。

[root@7d360d4ca309 elasticsearch]# curl localhost:9200
{
  "name" : "YaixkMv",
  "cluster_name" : "docker-cluster",
  "cluster_uuid" : "5FMg7KTUS2itv5HH75uyxA",
  "version" : {
    "number" : "6.5.4",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "d2ef93d",
    "build_date" : "2018-12-17T21:17:40.758843Z",
    "build_snapshot" : false,
    "lucene_version" : "7.5.0",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

先给出一张自己整理的图
在这里插入图片描述

cluster

  • . _cat
[root@7d360d4ca309 elasticsearch]# curl localhost:9200/_cat/nodes
172.17.0.3 27 44 1 0.03 0.08 0.03 mdi * YaixkMv   查看所有节点信息
[root@7d360d4ca309 elasticsearch]# curl localhost:9200/_cat/health
1608877101 06:18:21 docker-cluster yellow 1 1 3 3 0 0 3 0 - 50.0%  查看健康状态
[root@7d360d4ca309 elasticsearch]# curl localhost:9200/_cat/master
YaixkMvxRmqxjCWjlxtUeQ 172.17.0.3 172.17.0.3 YaixkMv  查看主节点
[root@7d360d4ca309 elasticsearch]# curl localhost:9200/_cat/indices
yellow open person QLlvxHxzSmu3c3s6pzpCtw 3 1 0 0 783b 783b 查看所有索引

index

  1. data

遇到{“error”:“Content-Type header [application/x-www-form-urlencoded] is not supported”,“status”:406}
需要添加-H “Content-Type: application/json”

# 增 POST不指定id会随机返回一个id每次都是create,指定id一次之后是update
[root@7d360d4ca309 elasticsearch]# curl -H "Content-Type: application/json" -X POST \
 localhost:9200/customer/externa/1 -d '{"name": "John"}'  
 # 还可以带上_update,对比原来数据,一样则不更新
# 改 PUT必须指定id否则会出错,一般用于修改,也可用于新增
[root@7d360d4ca309 elasticsearch]# curl -H "Content-Type: application/json" -X PUT  localhost:9200/customer/externa/1 -d '{"name": "Jim"}'
{"_index":"customer","_type":"externa","_id":"1","_version":2,"result":"updated","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":3,"_primary_term":1}
# _seq_no和_primary_term可以用作乐观锁,比如if_seq_no=0&if_primary_term=1

# 查  _开头的表示元数据
[root@7d360d4ca309 elasticsearch]# curl -X GET "http://localhost:9200/customer/externa/1"
{"_index":"customer","_type":"externa","_id":"1","_version":2,"found":true,"_source":{"name": "Jim"}}
# 删,可以删除索引或者某条id的数据,但是不能直接删除类型
[root@7d360d4ca309 elasticsearch]# curl -X DELETE "http://localhost:9200/customer/externa/1"
{"_index":"customer","_type":"externa","_id":"1","_version":3,"result":"deleted","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":4,"_primary_term":1}
# 查找不到found为false
[root@7d360d4ca309 elasticsearch]# curl -X GET "http://localhost:9200/customer/externa/1"rna/1"
{"_index":"customer","_type":"externa","_id":"1","found":false}

下面复杂的请求,可以使用kibana

  1. mapping
    指定各个字段的类型
# 增加索引的时候指定映射
PUT INDEX
{请求体}
# 增加字段
PUT INDEX/_mapping
# 不支持修改,只能迁移,_reindex
  • _bulk
    _bulk可以用于批量执行

(1)index 和 create 第二行是source数据体
(2)delete 没有第二行
(3)update 第二行可以是partial doc,upsert或者是script

POST /lib2/books/_bulk
{"index":{"_id":1}}  \\行为:索引信息
{"title":"Java","price","55"} \\请求体
{"index":{"_id":2}}
{"title":"Html5","price","45"}
{"index":{"_id":3}}
{"title":"Php","price","35"}`
{"index":{"_id":4}}
{"title":"Python","price","50"} 
  • _search
    有两种请求方式:一种url后加参数的,另一种请求体里面写参数叫作QueryDSL
curl localhost:9200/cutomer/_search?q=*

注意match会进行分词匹配,match_phrase不会进行分词

更多可以参考官方文档,学习视频推荐尚硅谷雷老师的课

猜你喜欢

转载自blog.csdn.net/weixin_44112790/article/details/111678219