Introducing the Query Language(介绍查询语言)

Elasticsearch 提供了一个可以执行查询的 Json 风格的 DSLdomain-specific language 领域特定语言)。这个被称为 Query DSL。该查询语言非常全面,并且刚开始的时候感觉有点复杂,真正学好它的方法是从一些基础的示例开始的。

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

curl -XGET 'localhost:9200/bank/_search?pretty' -d'
{
  "query": { "match_all": {} }
}'

分析上面的查询,query 部分告诉我们查询是如何定义的,match_all 部分就是我们要运行查询的简单的类型。该 match_all 查询简单的搜索了指定所有的所有文档。

除了 query 参数之外,我们也可以传递其它的参数以改变查询结果。在上部分的例子中我们传递了 sort,这里我们将传递 size

curl -XGET 'localhost:9200/bank/_search?pretty' -d'
{
  "query": { "match_all": {} },
  "size": 1
}'

注意,如果不指定 size,默认为 10.

下面的例子做了一个 match_all 并且返回了 1120 的文档。

curl -XGET 'localhost:9200/bank/_search?pretty' -d'
{
  "query": { "match_all": {} },
  "from": 10,
  "size": 10
}'

from 参数(0 为基础)指定了文档开始的编号,size 参数指定了从 from 参数开始有多少个文档被返回。在实现搜索结果分页时这个功能是很有用的。注意,如果不指定 from 参数,默认为 0

下面的例子做了一个 match_all,以及对结果通过账户余额按降序排序,并且返回了 top 10(默认大小)的文档。

curl -XGET 'localhost:9200/bank/_search?pretty' -d'
{
  "query": { "match_all": {} },
  "sort": { "balance": { "order": "desc" } }
}'