Elasticsearch提供了一种JSON样式的特定于域的语言,可用于执行查询。这被称为查询DSL。查询语言非常全面,乍一看可能令人生畏,但实际学习它的最佳方法是从一些基本示例开始。

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

    1. GET /bank/_search
    2. {
    3. "query": { "match_all": {} }
    4. }

    解析上面的内容,查询部分告诉我们查询定义是什么,match_all部分只是我们想要运行的查询类型。match_all查询只是搜索指定索引中的所有文档。

    1. GET /bank/_search
    2. {
    3. "query": { "match_all": {} },
    4. "size": 1
    5. }

    请注意,如果未指定大小,则默认为10。

    此示例执行match_all并返回文档10到19:

    1. GET /bank/_search
    2. {
    3. "query": { "match_all": {} },
    4. "from": 10,
    5. "size": 10
    6. }

    from参数(从0开始)指定从哪个文档索引开始,size参数指定从from参数开始返回的文档数。在实现搜索结果的分页时,此功能非常有用。请注意,如果未指定from,则默认为0。

    此示例执行match_all并按帐户余额降序对结果进行排序,并返回前10个(默认大小)文档。

    1. GET /bank/_search
    2. {
    3. "query": { "match_all": {} },
    4. "sort": { "balance": { "order": "desc" } }
    5. }