es查询语法
两种方式:发送HTTP GET请求进行检索、使用ES查询表达式 (DSL) 检索。
curl -XGET /megacorp/employee/1
如:
(1)、计算集群中文档的数量,我们可以用这个:
curl -XGET 'http://localhost:9200/_count?pretty' -d ' { "query": { "match_all": {} } }复制代码
ES将返回一个HTTP状态码(例如:200 OK`)和(除`HEAD`请求)一个JSON 格式的返回值。JSON 体如下:
{ "count" : 0, "_shards" : { "total" : 5, "successful" : 5, "failed" : 0 } }复制代码
第二种方式即使用使用ES查询表达式 (DSL) 检索:将请求参数按照ES约定的格式构造为一个JSON进行请求。
常用的查询:
查询方式 |
含义 |
使用方法 |
备注 |
||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
term过滤 |
term主要用于精确匹配哪些值,比如数字,日期,布尔值或 not_analyzed 的字符串。 not_analyzed 的字符串:未经切词的文本数据类型。 |
|
|||||||||||
terms过滤 |
terms 跟 term 有点类似,但 terms 允许指定多个匹配条件。 如果某个字段指定了多个值,那么document需要一起去做匹配。 |
|
|||||||||||
range |
range过滤允许我们按照指定范围查找一批数据。 |
|
范围操作符包含:
|
||||||||||
exists和missing |
exists 和 missing 过滤可以用于查找文档中是否包含指定字段或没有某个字段,类似于SQL语句中的IS_NULL条件。 这两个过滤只是针对已经查出一批数据来,但是想区分出某个字段是否存在的时候使用。 |
|
|||||||||||
bool过滤 |
bool 过滤可以用来合并多个过滤条件查询结果的布尔逻辑,它包含一下操作符: must :: 多个查询条件的完全匹配,相当于 and。 must_not :: 多个查询条件的相反匹配,相当于 not。 should :: 至少有一个查询条件匹配, 相当于 or。 这些参数可以分别继承一个过滤条件或者一个过滤条件的数组 |
|
下一篇: ES基础查询语法