1.match_all 全部匹配查询
通过_source 控制查询返回的字段
GET /bank/_search
{
"query": { "match_all": {} },
"_source": ["account_number", "balance"]
}
2.match 匹配查询
1)查询某个字段值的特定记录
GET /bank/_search
{
"query": {
"match": {
"account_number": "20"
}
}
}
2)查询地址包含 mill 或 lane的记录(es默认空格切分后or查询)
GET /bank/_search
{
"query": { "match": { "address": "mill lane" } }
}
3.bool query 查询
使用说明:must 与 ,should 或 ,must_not 非
1)查询地址同时包含mill 和 lane的
GET /bank/_search
{
"query": {
"bool": {
"must": [
{"match": {"address": "mill"}},
{"match": {"address": "lane"}}
]
}
}
}
2)查询地址包含mill或者lane的记录
GET /bank/_search
{
"query": {
"bool": {
"should": [
{ "match": { "address": "mill" } },
{ "match": { "address": "lane" } }
]
}
}
}
3)查询地址一定不包含mill和lane的记录
GET /bank/_search
{
"query": {
"bool": {
"must_not": [
{ "match": { "address": "mill" } },
{ "match": { "address": "lane" } }
]
}
}
}
4)查询age为40并且state值不为ID的记录
GET /bank/_search
{
"query": {
"bool": {
"must": [
{ "match": { "age": "40" } }
],
"must_not": [
{ "match": { "state": "ID" } }
]
}
}
}
bool query filter
bool query 支持filter子句查询,它允许我们根据一系列值筛选文档,通常用于数字或者日期等。
如:查询返回余额在20000到30000之间的所有帐户
GET /bank/_search
{
"query": {
"bool": {
"must": { "match_all": {} },
"filter": {
"range": {
"balance": {
"gte": 20000,
"lte": 30000
}
}
}
}
}
}
gte:greater than or equal 大于等于, lte:less than or equal 小于等于