elasticsearch系列笔记(五) 结构化查询

结构化查询Query DSL

1
2
3
4
5
6
7
8
9
10
11
GET /_search
{
"query": {
QUERY_NAME: {
FIELD_NAME: {
ARGUMENT: VALUE,
ARGUMENT: VALUE,
}
}
}
}

过滤查询Filter DSL

term 过滤

1
2
3
4
5
{
"term": {
"{field}": {value}
}
}

terms 过滤

1
2
3
4
5
{
"terms": {
"{field}": [ {value1}, {value2} ]
}
}

range过滤

1
2
3
4
5
6
7
{
"range": {
"{field}": {
"gte": 20, //gt gte, lt lte
}
}
}

exits, missing过滤

1
2
3
4
5
{
"exists": {
"field": "{field}",//存在这个类型
}
}

过滤

1
2
3
4
5
6
7
{
"bool": {
"must": {},//必须符合
"must_not": {},//必须不符合
"should": {},//必须符合其中一个条件
}
}

match_all

match

multi_match

查询比过滤多了相关性计算

复合查询

1
2
3
4
5
6
{
"filtered": {
"query": { "match": { "email": "business opportunity" }},
"filter": { "term": { "folder": "inbox" }}
}
}

验证查询,解释错误

1
2
3
4
5
6
GET /gb/tweet/_validate/query?explain
{
"query": {
*********
}
}

排序,在query之后

1
2
3
4
5
6
7
8
9
10
11
12
13
14
GET /_search
{
"query": {
},
"sort": {
"{field}":{
"order": "desc"
},
"{field}":{
"order": "asc",
"mode": "min" //field为多个值时
}
}
}