赞
踩
PUT 类似于SQL中的增
DELETE 类似于SQL中的删
POST 类似于SQL中的改
GET 类似于SQL中的查
PUT index_first
GET _cat/indices
DELETE index_first
product为库名,phone为表名,1为一条数据的id,不指定type默认为_doc。
- PUT /product/phone/1
- {
- "name" : "苹果14proMax",
- "desc" : "苹果手机双十一大促销,立减1000元!!!",
- "price" : "7999",
- "business" : "apple store",
- "tags" : ["shuma","dianzi"]
- }
GET product/phone/1
DELETE product
使用put方法就相当于将之前的数据删除,将新的数据添加上去 。
- PUT /product/phone/1
- {
- "desc" : "使用put修改之后的数据!"
- }
使用POST方法只修改指定的字段
- POST /product/phone/1/_update
- {
- "doc" :{
- "desc" : "这是使用post修改的数据!"
- }
- }
查看数据:
相当与全表扫描
GET /product/_search
took:耗费了523毫秒
shards:分片的情况
hits:获取到的数据的情况
total: 总的数据条数
max_score:所有数据里面打分最高的分数
_index: "product" index名称
_type: "phone" type的名称
_id:"2" id号
_score: 分数,这个分数越大越靠前出来,也就是匹配度越高越靠前
- PUT /product/phone/2
- {
- "name" : "苹果14",
- "desc" : "苹果手机双十一大促销,立减1000元!!!",
- "price" : "4999",
- "business" : "apple store",
- "tags" : ["shuma","dianzi"]
- }
- PUT /product/phone/3
- {
- "name" : "华为P40",
- "desc" : "华为手机双十一大促销,立减999元!!!",
- "price" : "5999",
- "business" : "huawei store",
- "tags" : ["shuma","dianzi"]
- }
使用match_all查询全部
- GET /product/_search
- {
- "query": {
- "match_all": {
-
- }
- }
- }
使用match可进行模糊或精准查询
- GET /product/_search
- {
- "query": {
- "match": {
- "name" : "苹果14"
- }
- }
- }
查询效果如下
使用 sort ,排序字段为text类型的会报错,设置为keyword类型,这里在语法中设置,可以在创建的时候将属性设置为keyword类型。
- GET /product/phone/_search
- {
- "query": {
- "match": {
- "name" : "苹果14"
- }
- },
- "sort": [
- {
- "price.keyword": {
- "order": "desc"
- }
- }
- ]
- }
效果如下,商品根据价格进行倒序排序:
from 从第几页开始,size每页数据条数
- GET /product/phone/_search
- {
- "query": {
- "match": {
- "name" : "苹果14"
- }
- },
- "sort": [
- {
- "price.keyword": {
- "order": "desc"
- }
- }
- ],
- "from": 0,
- "size": 1
- }
设置为从第0页开始,每页一条数据,效果如下图:
使用_source实现,他和query平级
- GET /product/phone/_search
- {
- "query": {
- "match_all": {
-
- }
- },
- "_source": ["name","price"]
- }
只查出所有数据的名称和价格字段,效果如下:
bool 过滤可以用来合并多个过滤条件查询结果的布尔逻辑,它包含以下操作符:
must: 多个查询条件的完全匹配,相当于 and。
must_not : 多个查询条件的相反匹配,相当于 not。
should :至少有一个查询条件匹配, 相当于 or。
这些参数可以分别继承一个过滤条件或者一个过滤条件的数组
操作:查询名称里带有苹果的,并且价格大于6000元的数据
- GET /product/phone/_search
- {
- "query": {
- "bool": {
- "must": [
- {
- "match": {
- "name" : "苹果"
- }
- }
- ],
- "filter": [
- {
- "range":{
- "price" : {
- "gt" : "6000"
- }
- }
- }
- ]
- }
- }
- }
使用 filter 操作符进行过滤,它包含的操作符 range 代表范围,其中"gt"为大于号,"lt"为小于号,查询效果如下,只有一个数据,因为另一个名字带苹果的价格小于6000元:
操作:查询名字为苹果14的商品
- GET /product/phone/_search
- {
- "query": {
- "match_phrase": {
- "name": "苹果14"
- }
- }
- }
如图,只查到了苹果14:
使用highlight,和query平级
查询名字中带苹果14的商品,并高亮显示
- GET /product/phone/_search
- {
- "query": {
- "match": {
- "name": "苹果14"
- }
- },
- "highlight": {
- "fields": {
- "name" : {}
- }
- }
- }
高亮显示的字段会被<em></em>包裹,可以修改高亮显示的效果,查询结果如下:
terms 允许指定多个匹配条件,group_by_tag为自定义名称
注意:聚合的字段必须为keyword类型,如果是text类型的会报错
- GET /product/phone/_search
- {
- "aggs": {
- "group_by_tag": {
- "terms": {
- "field": "tags"
- }
- }
- }
- }
效果如下
- GET /product/phone/_search
- {
- "query": {
- "match": {
- "name": "苹果"
- }
- },
- "aggs": {
- "group_by_tag": {
- "terms": {
- "field": "tags"
- }
- }
- }
- }
效果如下
为了防止因为不是keword类型进行聚合错做而报错,重新创建并设置类型
- PUT /product2
- {
- "mappings": {
- "properties": {
- "name":{
- "type":"text"
- },
- "price":{
- "type":"keyword"
- }
- }
- }
- }
设置完类型之后,进行赋值,使用put方法,上面演示过了,这里跳过。
GET product2/_mapping
查看刚刚创建的索引映射,效果如下,可以看到name的类型为text,price的类型为keword
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。