Elasticsearch提供了一种JSON样式的领域特定语言,你可以用他来执行查询。被称为:Query DSL。该查询语言极其的复杂并且第一样看上去会令人心生敬畏。然而学习它最好的方式是现在一些简单的例子开始。
回到我们之前的案例,我们执行下面的查询:
GET /bank/_search { "query": { "match_all": {} } }
或者:
curl -XGET 'localhost:9200/bank/_search?pretty' -H 'Content-Type: application/json' -d' { "query": { "match_all": {} } } '
分析上面命令,query告知我们查询定义,match_all指定我们打算运行的查询类型。match_all就是在指定的索引中查询所有的文档。
除了query参数,我们也可以传递其他的参数来影响查询结果。在之前的额例子中我们使用过sort参数,现在我们传入size参数:
GET /bank/_search { "query": { "match_all": {} }, "size": 1 }
或者
curl -XGET 'localhost:9200/bank/_search?pretty' -H 'Content-Type: application/json' -d' { "query": { "match_all": {} }, "size": 1 } '
如果不指定size,则默认值为10.
下面的例子将在bank索引中匹配所有的文档,并返回第11到第20条文档。
GET /bank/_search { "query": { "match_all": {} }, "from": 10, "size": 10 }
from参数(从0开始)指定分页的起始序号,size参数指定了从from开始返回多少条文档。这个功能对于实现结果的分页是很有帮助的。注意如果没有指定from的值,那么默认是0.
下面的例子从按照account字段降序排列所有的文档中查询10条文档。
GET /bank/_search { "query": { "match_all": {} }, "sort": { "balance": { "order": "desc" } } }
本文系本人根据官方文档的翻译,能力有限、水平一般,如果对想学习Elasticsearch的朋友有帮助,将是本人的莫大荣幸。
文档出处:https://www.elastic.co/guide/en/elasticsearch/reference/current/_introducing_the_query_language.html