赞
踩
从本篇文章开始将开始介绍ES的查询语法。相比于SQL,ES的查询语法可以说非常难以记忆。但是通过学习我发现也并非无迹可寻。
从本篇开始的以后几章将着重介绍ES的查询语法。本篇将介绍的是ES最基本的查询——单个条件的查询语句。
//其中index_name表示要查询的索引,doc_id表示要查询文档的id。后面的filter_path在上一章有讲过,如果忘记可以进行查看。
http://{{ _.es_url }}/{index_name}/_doc/{doc_id}?filter_path=-_shards
查询全部有几种方式,将逐一介绍。
1.get请求查询全部
//下面index_name可以有很多写法,如果要查某个索引,就写这个索引的全名,如果要查询以某字符开头的索引,写「index_prefix*」,如需要查以「test-2021」开头的全部索引,可以写「test-2021*」进行查询。
http://{{ _.es_url }}/{index_name}/_search?pretty=true
2.post请求查询全部
{
"query":{
"match_all":{}
}
}
首先还是要先写明要查询的索引。下面url中有参数,这里不再赘述,如有需要请翻看之前的文章。
http://{{ _.es_url }}/{index_name}/_search?track_total_hits=true
查询语法:
{
"query":{
"term":{
"ip":"127.0.0.1"
}
}
}
上面语法中query
关键字,表示里面要写的是查询条件。term
关键字表示查询方式。ip是要查询的字段。127.0.0.1
是该字段的值。
term
具体是什么意思呢,后面会结合match
一起说。
{
"query":{
"match":{
"ip":"127.0.0.1"
}
}
}
语法与term查询相同,不同的是关键字换成了match。match
查询和term
查询的区别:
range是基本查询中的一种,以term和match并列,用于查询范围。
{
"query": {
"range": {
"analyzTime": {
"gte": 500,
"lte": 2000
}
}
}
}
查询文档中是否包含某个字段。exists关键字用于指定需要存在的字段。如果需要也可以将其包含在布尔查询条件中.
{
"track_total_hits": true,
"query": {
"exists": {
"field": "device"
}
}
}
以上是几种最基本的查询方式。这些查询方式都仅能查询一个条件。很明显在实际使用中这肯定是不满足需求的,但是所有的复杂查询都是由以上几种基本查询组合而来的。
因此对本章内容掌握以后对以后复杂查询的理解至关重要。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。