🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# Introducing the Query Language(介绍查询语言) 原文链接 : [https://www.elastic.co/guide/en/elasticsearch/reference/5.4/_introducing_the_query_language.html](https://www.elastic.co/guide/en/elasticsearch/reference/5.4/_introducing_the_query_language.html) 译文链接 : [http://www.apache.wiki/pages/viewpage.action?pageId=4260757](http://www.apache.wiki/pages/viewpage.action?pageId=4260757) 贡献者 : [那伊抹微笑](/display/~wangyangting),[ApacheCN](/display/~apachecn),[Apache中文网](/display/~apachechina) **Elasticsearch** 提供了一个可以执行查询的 **Json** 风格的 **DSL**(**domain-specific language** 领域特定语言)。这个被称为 [Query DSL](https://www.elastic.co/guide/en/elasticsearch/reference/5.0/query-dsl.html "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** 并且返回了 **11** 到 **20** 的文档。 ``` 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" } } }' ```