(九)、关于文档的基本操作 (重点)
1.基本操作
(1). 添加操作 (PUT)
创建第一个数据 PUT /jsxs/user/1 { "name":"吉士先生", "age":22, "desc":"一顿操作猛如虎,一看工资2500", "tags":["技术宅","温暖的人","直男"] } 创建第二个数据 PUT /jsxs/user/2 { "name":"吉士先生2", "age":23, "desc":"一顿操作猛如虎,一看工资2600", "tags":["技术宅2","温暖的人2","直男2"] } 创建第三个数据 PUT /jsxs/user/3 { "name":"吉士先生3", "age":23, "desc":"一顿操作猛如虎,一看工资2700", "tags":["技术宅3","温暖的人3","直男3"] }
(2).获取操作 (GET)
GET jsxs/user/1
(3).更新数据 (PUT)
PUT /jsxs/user/3 { "name":"吉士先生4", #这里进行了修改 "age":23, "desc":"一顿操作猛如虎,一看工资2700", "tags":["技术宅3","温暖的人3","直男3"] }
(4).更新数据 (POST _update) 推荐
这个可以选择性修改,而另一个会全部修改
POST /jsxs/user/3/_update { "doc":{ "name":"吉士先生55" } }
(5).简单的条件查询 (模糊查询)
GET /jsxs/user/_search?q=name:吉士先生2 • 1
2.复杂操作 (排序、分页、高亮、模糊查询、标准查询)
(1).介绍基本的ElasticSearch的 JSON框架
GET /jsxs/user/_search { "query": { "match": { "name": "吉士先生2" } } }
kibana 里查询的参数体使用Json结构
eq ——> equal 代表相等
在JAVA里面 hit 是一个对象: 会得到所有的信息包括权重。
"hits" : [ { "_index" : "jsxs", "_type" : "user", "_id" : "2", "_score" : 3.8132527, "_source" : { "name" : "吉士先生2", "age" : 23, "desc" : "一顿操作猛如虎,一看工资2600", "tags" : [ "技术宅2", "温暖的人2", "直男2" ] } }, { "_index" : "jsxs", "_type" : "user", "_id" : "1", "_score" : 2.577336, "_source" : { "name" : "吉士先生", "age" : 22, "desc" : "一顿操作猛如虎,一看工资2500", "tags" : [ "技术宅", "温暖的人", "直男" ] } }, { "_index" : "jsxs", "_type" : "user", "_id" : "3", "_score" : 2.3163397, "_source" : { "name" : "吉士先生55", "age" : 23, "desc" : "一顿操作猛如虎,一看工资2700", "tags" : [ "技术宅3", "温暖的人3", "直男3" ] } } ]
(2). 结果过滤 (_source)
有时候我们并不想要全部的数据都被打印出来,只需要打印出来部分即可,这时候我们就需要使用过滤了。默认的是全部打印出来...
只需要 name和desc "_source":["name","desc"]
GET /jsxs/user/_search { "query": { "match": { "name": "吉士先生2" } }, "_source":["name","desc"] }
(3).排序 (sort)
通过哪一个字段进行排序
根据年龄进行降序排序->desc asc->降序 "sort": [ { "age": { "order": "desc" } } ]
GET /jsxs/user/_search { "query": { "match": { "name": "吉士先生2" } }, "sort": [ { "age": { "order": "desc" } } ] }
(4).分页查询 (form、size)
分页查询的操作....
从第0页即1页开始,然后每页展示2个数据 "from": 0, "size": 2
GET /jsxs/user/_search { "query": { "match": { "name": "吉士先生2" } }, "sort": [ { "age": { "order": "desc" } } ], "from": 0, "size": 2 }
数据下标还是从0开始的。
(5).布尔值查询 - and (must)
must (and),所有的条件都要符合 where id=1 and name='xxx'
GET /jsxs/user/_search { "query": { "bool": { "must": [ { "match": { "name": "吉士先生2" } }, { "match": { "age": "23" } } ] } } }
(6).布尔值查询 - or (should)
shold (or),所有的条件都要符合 where id=1 orname='xxx' or
GET /jsxs/user/_search { "query": { "bool": { "should": [ { "match": { "name": "吉士先生2" } }, { "match": { "age": "23" } } ] } } }
#! Deprecation: [types removal] Specifying types in search requests is deprecated. { "took" : 1, "timed_out" : false, "_shards" : { "total" : 1, "successful" : 1, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 3, "relation" : "eq" }, "max_score" : 3.9415374, "hits" : [ { "_index" : "jsxs", "_type" : "user", "_id" : "2", "_score" : 3.9415374, "_source" : { "name" : "吉士先生2", "age" : 23, "desc" : "一顿操作猛如虎,一看工资2600", "tags" : [ "技术宅2", "温暖的人2", "直男2" ] } }, { "_index" : "jsxs", "_type" : "user", "_id" : "3", "_score" : 2.5716512, "_source" : { "name" : "吉士先生55", "age" : 23, "desc" : "一顿操作猛如虎,一看工资2700", "tags" : [ "技术宅3", "温暖的人3", "直男3" ] } }, { "_index" : "jsxs", "_type" : "user", "_id" : "1", "_score" : 1.7364457, "_source" : { "name" : "吉士先生", "age" : 22, "desc" : "一顿操作猛如虎,一看工资2500", "tags" : [ "技术宅", "温暖的人", "直男" ] } } ] } }