使用结构化查询,你需要传递参数:
空查询 - {}
- 在功能上等同于使用match_all
查询子句,正如其名字一样,匹配所有的文档:
GET /_search
{
"query": {
"match_all": {}
}
}
一个查询子句一般使用这种结构:
{
QUERY_NAME: {
FIELD_NAME: {
ARGUMENT: VALUE,
}
}
例如,你可以使用match
查询子句用来找寻在tweet
字段中找寻包含elasticsearch
的成员:
完整的查询请求会是这样:
GET /_search
{
"query": {
"match": {
"tweet": "elasticsearch"
}
}
}
合并多子句
查询子句就像是搭积木一样,可以合并简单的子句为一个复杂的查询语句,比如:
复合子句能合并 任意其他查询子句,包括其他的复合子句。
这就意味着复合子句可以相互嵌套,从而实现非常复杂的逻辑。
以下实例查询的是邮件正文中含有“business opportunity”字样的星标邮件或收件箱中正文中含有“business opportunity”字样的非垃圾邮件:
{
"bool": {
"must": { "match": { "email": "business opportunity" }},
"should": [
{ "match": { "starred": true }},
{ "bool": {
"must": { "folder": "inbox" }},
"must_not": { "spam": true }}
}}
],
"minimum_should_match": 1
}