首页 技术 正文
技术 2022年11月14日
0 收藏 502 点赞 2,405 浏览 3047 个字

1、获取所有数据

GET  /_search

2、创建一个Document

PUT /ecommerce/product/1
{
"name" : "gaolujie yagao",
"desc" : "gaoxiao meibai",
"price" : 30,
"producer" : "gaolujie producer",
"tags": [ "meibai", "fangzhu" ]
}PUT /ecommerce/product/2
{
"name" : "jiajieshi yagao",
"desc" : "youxiao fangzhu",
"price" : 25,
"producer" : "jiajieshi producer",
"tags": [ "fangzhu" ]
}
PUT /ecommerce/product/3
{
"name" : "zhonghua yagao",
"desc" : "caoben zhiwu",
"price" : 40,
"producer" : "zhonghua producer",
"tags": [ "qingxin" ]
}

3、检索文档查询

GET /ecommerce/product/1

4、替换文档(全量替换)

PUT /ecommerce/product/1
{
"name" : "jiaqiangban gaolujie yagao",
"desc" : "gaoxiao meibai",
"price" : 30,
"producer" : "gaolujie producer",
"tags": [ "meibai", "fangzhu" ]
}

5、更新文档(_update)

POST /ecommerce/product/1/_update
{
"doc":
{
"price":70
}
}

6、删除文档

DELETE /ecommerce/product/1

注意:在删除一个Document之后,它不是立即物理删除的,因为它的版本等信息还保留着

二、请求分类

1、query string search
类似这种 搜索全部商品:GET /ecommerce/product/_search(参数直接拼接在请求url上,不带json参数的)
query string search的由来,因为search参数都是以http请求的query string来附带的
搜索商品名称中包含yagao的商品,而且按照售价降序排序:GET /ecommerce/product/_search?q=name:yagao&sort=price:desc
适用于临时的在命令行使用一些工具,比如curl,快速的发出请求,来检索想要的信息;但是如果查询请求很复杂,是很难去构建的,所以在生产环境中,几乎很少使用query string search
2、query DSLDSL:Domain Specified Language,特定领域的语言
http request body:请求体,可以用json的格式来构建查询语法,比较方便,可以构建各种复杂的语法,比query string search肯定强大多了。

实例一:查询所有的商品

GET ecommerce/product/_search
{
  ”query”:
    {
      ”match_all”: {}
    }
}

实例二:查询名称包含yaogao的产品,同时按照价格进行降序排序

GET ecommerce/product/_search
{
  ”query”: {
    ”match”: {
      ”name”: “yaogao”
    }
  },
  ”sort”: [
    {
      ”price”:”desc”
    }
  ]
}

3、分页查询
总共3条商品,假设每页就显示1条商品,现在显示第1页,所以就查出来第1个商品

GET ecommerce/product/_search
{
  ”query”: {
    ”match_all”: {}
  }, 
  ”from”: 0,
  ”size”: 1
}

4、查询指定项

GET ecommerce/product/_search
{
  ”query”: {
    ”match_all”: {}
  },
  ”_source”: [“name”,”price”]
}

5、过滤查询

搜索商品名称包含yagao,而且售价大于25元的商品

GET ecommerce/product/_search
{
"query": {
"bool": {
"must": {
"match" : {
"name" : "yagao" }
},
"filter": {
"range": {
"price": {
"gte": 25
}
}
}
}
}
}

6、full-text search(全文检索)

全文检索会将输入的搜索串拆解开来,去倒排索引里面去一一匹配,只要能匹配上任意一个拆解后的单词,就可以作为结果返回

GET ecommerce/product/_search
{
"query": {
"match": {
"producer": "yagao producer"
}
}
}

7、phrase search(短语搜索)

phrase search,要求输入的搜索串,必须在指定的字段文本中,完全包含一模一样的,才可以算匹配,才能作为结果返回

GET ecommerce/product/_search
{
"query": {
"match_phrase": {
"producer": "jiajieshi producer"
}
}
}

8、多条件查询

名字中有"yagao",描述上可以有fangzhu也可以没有,价格不能是25元must表示一定要满足;should表示可以满足也可以不满足;must_not表示不能满足该条件;"minimum_should_match": 1,表示最小匹配度,可以设置为百分百,详情看源文档Elasticsearch Reference [6.4] » Query DSL » Minimum Should Match,
设置了这个值的时候就必须满足should里面的设置了,另外注意这边should里面同一字段设置的多个值(意思是当这个值等于X或者等于Y的时候都成立,务必注意格式)
GET /ecommerce/_search
{
"query": {
"bool": {
"must": [
{
"match": {
"name": "yagao"
}
}
],
"should": [
{
"match": {
"desc": "fangzhu"
}
},
{
"match": {
"desc": "caoben"
}
}
],
"must_not": [
{
"match": {
"price": 25
}
}
],
"minimum_should_match": 1
}
}
}

multi-index和multi-type搜索模式

告诉你如何一次性搜索多个index和多个type下的数据

/_search:所有索引,所有type下的所有数据都搜索出来

/index1/_search:指定一个index,搜索其下所有type的数据

/index1,index2/_search:同时搜索两个index下的数据

/test1_*,test2_*/_search:按照通配符去匹配多个索引

/index1/type1/_search:搜索一个index下指定的type的数据

/index1/type1,type2/_search:可以搜索一个index下多个type的数据

/index1,index2/type1,type2/_search:搜索多个index下的多个type的数据

/_all/type1,type2/_search:_all,可以代表搜索所有index下的指定type的数据

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,492
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,907
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,740
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,494
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,132
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,295