must:与关系,相当于关系型数据库中的 and。
should:或关系,相当于关系型数据库中的 or。
must_not:非关系,相当于关系型数据库中的 not。
filter:过滤条件。
range:条件筛选范围。
gt:大于,相当于关系型数据库中的 >。
gte:大于等于,相当于关系型数据库中的 >=。
lt:小于,相当于关系型数据库中的 <。
lte:小于等于,相当于关系型数据库中的 <=
#创建索引
PUT /items
#初始化数据
POST /items/_bulk
{ "index": { "_id": 1 }}
{ "price" : 40, "itemID" : "ID1001" }
{ "index": { "_id": 2 }}
{ "price" : 50, "itemID" : "ID1002" }
{ "index": { "_id": 3 }}
{ "price" : 25, "itemID" : "ID1004" }
{ "index": { "_id": 4 }}
{ "price" : 30, "itemID" : "ID1004" }
{ "index": { "_id": 5 }}
{ "price" : null, "itemID" : "ID1005" }
GET items/_mapping
GET items/_search
{
"query": {
"match_all": {}
}
}
#查询价格等于25,并且ItemID是ID1004
GET items/_search
{
"query": {
"bool": {
"must": [
{
"term": {
"price": "25"
}
},
{
"term": {
"itemID": "id1004"
}
}
]
}
}
}
# 过滤查询价格等于40
GET items/_search
{
"query": {
"bool": {
"filter": [
{"term": {
"price": "40"
}}
]
}
}
}
#过滤价格是30至50
GET items/_search
{
"query": {
"bool": {
"filter": [
{"range": {
"price": {
"gte": 30,
"lte": 50
}
}}
]
}
}
}
# 查询价格是25或itemID是ID1004,同时价格不为30
GET items/_search
{
"query": {
"bool": {
"should": [
{
"term": {
"price": 25
}
},
{
"term": {
"itemID": "id1004"
}
}
],
"must_not": [
{"term": {
"price": 30
}}
]
}
}
}
DELETE items