先看下我的数据:
1、查询所有文档:
GET /cartest/_search
或者
GET /cartest/_search
{
"query": {
"match_all": {}
}
}
2、匹配查询:
match匹配类型查询,会把查询条件进行分词,然后进行查询,多个词条之间是or的关系
GET /cartest/_search
{
"query": {
"match": {
"name": "风云"
}
}
}
3、字段匹配查询:
multi_match 与match类似,不同的是它可以在多个字段中查询。
4、关键字精准查询:
这个term查询不对查询条件进行分词,
要是text文本类型就会出错,keyword可以进行此类查询
这里我们查 name:风云 就什么都没查到
向 cartest 中再加一个keyword类型的class字段
PUT /cartest/_mapping
{
"properties": {
"class":{
"type": "keyword",
"index": true
}
}
}
添加一条数据
POST /cartest/_doc
{
"name": "wang",
"page": "cn",
"say": "欢迎",
"time": "2020-12-11",
"class": "box"
}
我们再次查询:
GET /cartest/_search
{
"query": {
"term": {
"class": {
"value": "box"
}
}
}
}
5、多关键字查询:
terms 查询和term 查询一样,但它允许你指定多值进行匹配。
如果这个字段包含了指定值中的任何一个值,那么这个文档满足条件,类似于 mysql 的 in
当然,一定要记得查询的字段为关键字keyword类型,不然查不到内容
GET /cartest/_search
{
"query": {
"terms": {
"class": ["box", "box-1"]
}
}
}
6、组合查询:
bool把各种其它查询通过must(必须 )、must_not(必须不)、should(应该)的方式进行组合
7、范围查询:
操作符 | 说明 |
---|---|
gt | 大于> |
gte | 大于等于>= |
lt | 小于< |
lte | 小于等于<= |
查询 num 100 - 150之间的数据
GET /cartest/_search
{
"query": {
"range": {
"num": {
"gte": 100,
"lte": 150
}
}
}
}
查询 04 - 06号之间的数据
8、分页查询+排序:
也可设置多字段排序,主次为代码顺序
GET /cartest/_search
{
"query": {
"match_all": {}
},
"sort": [
{
"num": {
"order": "desc"
}
}
],
"from": 0,
"size": 3
}
当然也可以按时间排序
9、查询需要的字段
GET /cartest/_search
{
"_source": ["name", "time", "num"],
"query": {
"match_all": {}
},
"sort": [
{
"time": {
"order": "desc"
}
}
],
"from": 0,
"size": 3
}
10、过滤查询:
includes:来指定想要显示的字段
excludes:来指定不想要显示的字段
只显示 name time 字段
不显示 name time 字段
11、聚合查询:
聚合允许使用者对 es 文档进行统计分析,类似与关系型数据库中的 group by,当然还有很
多其他的聚合,例如取最大值、平均值等等。
获取 num 最大值,size是 hits中数值的数量文章来源:https://www.toymoban.com/news/detail-856172.html
GET /cartest/_search
{
"aggs": {
"max_age": {
"max": {
"field": "num"
}
}
},
"size": 0
}
平均值:
文章来源地址https://www.toymoban.com/news/detail-856172.html
到了这里,关于ElasticSearch:查询操作合集的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!