1.term 过滤(精确匹配)
term主要用于精确匹配哪些值,比如数字,日期,布尔值或 not_analyzed 的字符串(未经分析的文本数据类型)
DSL:
{
"query" : {
"term" : {
"picParentId" : "15020400114"
}
}
}
2.terms 过滤(多条件精确匹配)
terms 跟 term 有点类似,但 terms 允许指定多个匹配条件。 如果某个字段指定了多个值,那么文档需要一起去做匹配
DSL:
{
"query" : {
"terms" : {
"id" : ["1","2","3","4","5"]
}
}
}
3.range 过滤(范围查找)
range过滤允许我们按照指定范围查找一批数据,范围操作符包含:
gt : 大于
gte: 大于等于
lt : 小于
lte: 小于等于
DSL:
{
"query" : {
"range" : {
"time" : {
"gte" : 1561795200000,
"lt" : 1562174761211
}
}
}
}
4.bool 过滤(合并多个过滤条件查询结果)
bool 过滤可以用来合并多个过滤条件查询结果的布尔逻辑,它包含以下操作符:
must : 多个查询条件的完全匹配,相当于 and。
must_not : 多个查询条件的相反匹配,相当于 not。
should : 至少有一个查询条件匹配, 相当于 or。
这些参数可以分别继承一个过滤条件或者一个过滤条件的数组:
DSL:
{
"query" : {
"bool": {
"must": { "term": { "id": "177" }},
"must_not": { "term": { "cphm": ""}},
"should": [
{ "term": { "picParentId": "150204000013" }},
{ "term": { "time": 1562231879869 }}
]
}
}
}
5.exists 和 missing 过滤(是否包含指定字段或没有某个字段)
exists 和 missing 过滤可以用于查找文档中是否包含指定字段或没有某个字段,类似于SQL语句中的IS_NULL条件.
这两个过滤只是针对已经查出一批数据来,但是想区分出某个字段是否存在的时候使用。
DSL:
{
"query" : {
"exists": {
"field": "cphm"
}
}
}
1.match_all 查询
可以查询到所有文档,是没有查询条件下的默认语句
DSL:
{
"query":{"match_all":{}},
"sort":[
{
"time":"desc"
}
]
}
2.match 查询
指定某个确切字段某个确切的值进行搜索
DSL:
{
"query" : {
"match" : {
"picParentId" : "15020400001320000"
}
}
}
3.multi_match 查询
multi_match查询允许你做match查询的基础上同时搜索多个字段,在多个字段中同时查一个条件
DSL:
{
"query" : {
"multi_match" : {
"query": "黑色",
"fields": [ "syys", "kzys" ]
}
}
}
4.bool 查询
bool 查询与 bool 过滤相似,用于合并多个查询子句。不同的是,bool 过滤可以直接给出是否匹配成功, 而bool 查询要计算每一个查询子句的 _score (相关性分值)。
must : 查询指定文档一定要被包含。
must_not : 查询指定文档一定不要被包含。
should : 查询指定文档,有则可以为文档相关性加分。
DSL:
{
"query" : {
"bool": {
"must": { "match": { "id": "177" }},
"must_not": { "match": { "cphm": ""}},
"should": [
{ "match": { "picParentId": "1502040160303325" }},
{ "match": { "time": 1562231879869 }}
]
}
}
}