Elasticsearch Query DSL(查询语言)

章节


Elasticsearch提供了一种json风格的查询语言,称为Query DSL(Query domain-specific language)。查询语言功能很全面,让我们从几个基本示例开始。

回到上一章例子,我们执行了这个查询:

API

GET /bank/_search
{
  "query": { "match_all": {} }
}

CURL

curl -X GET "localhost:9200/bank/_search" -H 'Content-Type: application/json' -d'
{
  "query": { "match_all": {} }
}
'

query字段表示这次查询的定义,其中match_all字段表示查询类型 - 匹配所有文档。

除了query参数,还可以传递其他参数。下面例子中,我们传入一个size参数,设置返回条目数量:

API

GET /bank/_search
{
  "query": { "match_all": {} },
  "size": 1
}

CURL

curl -X GET "localhost:9200/bank/_search" -H 'Content-Type: application/json' -d'
{
  "query": { "match_all": {} },
  "size": 1
}
'

注意,如果没有指定size,默认为10。

下面例子执行match_all,返回文档10到19:

API

GET /bank/_search
{
  "query": { "match_all": {} },
  "from": 10,
  "size": 10
}

CURL

curl -X GET "localhost:9200/bank/_search" -H 'Content-Type: application/json' -d'
{
  "query": { "match_all": {} },
  "from": 10,
  "size": 10
}
'

from参数(基于0)指定从哪个文档序号开始,size参数指定返回多少个文档,这两个参数对于搜索结果分页非常有用。注意,如果没有指定from,则默认值为0。

下面例子执行match_all操作,对结果按帐户余额降序排序,返回前10个(默认)文档。

API

GET /bank/_search
{
  "query": { "match_all": {} },
  "sort": { "balance": { "order": "desc" } }
}

CURL

curl -X GET "localhost:9200/bank/_search" -H 'Content-Type: application/json' -d'
{
  "query": { "match_all": {} },
  "sort": { "balance": { "order": "desc" } }
}
'

猜你喜欢

转载自www.cnblogs.com/jinbuqi/p/11504375.html