最重要的查询过滤语句
之前的那篇博客,主要是针对elasticsearch的整理。下面我个人觉得会非常实用。
term过滤
term 主要用于精确匹配哪些值,比如数字,日期,布尔值或not_analyzed的字符串
{“term”:{“age”:26}}
{“term”:{“date”:”2014-09-01”}}
{“term”:{“public”:true}}
{“term”:{“tag”:”full_text”}}
terms过滤
terms跟term有点类似,但terms允许指定多个匹配条件。如果某个字段指定了多个值,那么稳定需要一起去匹配:
{
“terms”:{
“tag”:[“search”,”full_text”,”nosql”]
}
}
range过滤
range过滤允许我们按照指定方位查找一批数据:
{
“range”:{
“age”:{
“gte”:20,
“lt”:30
}
}
}
操作符 | 意思 |
---|---|
gt | 大于 |
gte | 大于等于 |
lt | 小于 |
lte | 小于等于 |
exists和missing过滤
exists和missing过滤可以用于查找稳定中是否包含指定字段或没有某个字段,类似于sql语句中is_null条件
{
“exists”:{
“field”:”titile”
}
}
bool过滤
bool 过滤可以用来合并多个过滤条件查询结果的布尔逻辑,它包含以下操作符:
操作符 | 意思 |
---|---|
must | 多个查询天剑的完全匹配 相当于and |
must_not | 多个查询条件的相反匹配,相当于not |
should | 至少有一个查询条件匹配,相当于or |
{
“bool”:{
“must”:{“term”:{“folder”:”inbox”}},
“must_not”:{“term”:{“tag”:”spam”}},
“should”:[
{“term”:{“starred”:true}},
{“term”:{“unread”:true}}
]
}
}
match_all 查询
使用match_all 可以查询到所有文档,是没有查询条件下的默认语句。
match 查询
match查询是一个标准查询,不管你需要权文博查询还是精确查询基本上都要用到它。
如果你使用