es基本使用之查询数据

es基本使用之查询数据#

 

查询全部#

{
  "query": {
    "match_all": {}
  }
}
 
  • 查询结果说明
    • took:耗费了几毫秒
    • timed_out:是否超时,这里是没有
    • _shards:数据拆成了5个分片,所以对于搜索请求,会打到所有的primary shar
    • hits.total:查询结果的数量,多少个document
    • hits.max_score: score的含义,就是document对于一个search的相关度的匹配分数,越相关,就越匹配,分数也高
    • hits.hits:包含了匹配搜索的document的详细数据
 

单个条件查询#

## 方法1
GET goods/fruit/_search/?q=name:xiangjiao         ## 查询名字为xiangjiao的
## 方法2
GET goods/fruit/_search
{
  "query": {
    "match": {
      "name": "xiangjiao"
    }
  }
}
 

多个条件查询#

{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "taskid": "123"
          }
        },
        {
          "match": {
            "time": "2021-05-20"
          }
        }
      ]
    }
  }
}
 

按条件查询和排序#

  • 查询 name=pingguo 使用价格进行正向排序
GET goods/fruit/_search
{
	"query": {
		"match": {
			"name": "pingguo"
		}
	},
	"sort": [
	  {
	    "price": {
	      "order": "desc"
	    }
	  }
	]
}
 

分页查询#

  • 注意: 这里的检索结果是倒排索引,不是按照id排序的,是按照倒排的方式来进行检索的,再强调下,不是根据id排序
  • 每页显示两条数据
GET /goods/fruit/_search
{
	"query": {
		"match_all": {}
	},
	"from": 0,
	"size": 2
}
 

只显示指定字段#

  • 检索出来的内容也就只包含了name和price字段的内容
GET /goods/fruit/_search
{
	"query": {
		"match_all": {}
	},
	"_source": ["name","price"], 
	"from": 0,
	"size": 2
}
 

多条件匹配查询#

  • 查询 name=xiangjiao 并且 price=25
GET /goods/fruit/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "name": "xiangjiao"
          }
        },
        {
          "match": {
            "price": "25"
          }
        }
      ]
    }
  }
}
 
  • 查询 name=xiangjiao 或者 price=45
GET /goods/fruit/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "match": {
            "name": "xiangjiao"
          }
        },
        {
          "match": {
            "price": "45"
          }
        }
      ]
    }
  }
}
 

过滤查询#

  • 注意:filter于must/must_not/should是并列关系,同属于bool的子属性
  • lt:小于, lte:小于等于, gt:大于, gte:大于等于
  • 查询 name=xiangjiao 或者 价格在 10~40之间的水果
GET /goods/fruit/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "match": {
            "name": "xiangjiao"
          }
        }
      ],
      "filter": {
        "range": {
          "price": {
            "gte": 10,
            "lte": 40
          }
        }  
      }
    }
  }
}
 

全文检索#

  • 查询 name=pingguo 或者 name=xiangjiao的
GET /goods/fruit/_search
{
  "query": {
    "match": {
      "name": "pingguo xiangjiao"
    }
  }
}
 

参考博客:http://v5blog.cn/pages/df12b3/#_3-6-多条件匹配查询

作者:就学45分钟

出处:https://www.cnblogs.com/tjw-bk/p/14790688.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!

分类: elasticsearch
0
0
« 上一篇: python 时间格式转换
» 下一篇: Python--django 实现文件下载功能
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值