ES教程-高级搜索
一、通过filter只搜索age=13的数据,需要注意的是term是不做分词处理,如果换成match就是做分词处理
GET /employee/_search { "query": { "bool": { "filter": [ {"term": {"age": 13}} ] } } } //目前实际测试下来和下面查询方式效果一样 GET /employee/_search { "query":{ "match":{"age":18} } }
二、加上排序和分组功能
//按age倒序排列,并以age做为分组显示分组数据 GET /employee/_search { "query":{ "match":{"name":"任"} }, "sort":[ {"age":{"order":"desc"}} ], "aggs":{ "group_by_age":{ "terms":{ "field":"age" } } } } //分组数据如下(以下示例去掉了name筛选) { "took": 1, "timed_out": false, "_shards": { "total": 1, "successful": 1, "skipped": 0, "failed": 0 }, "hits": { "total": { "value": 4, "relation": "eq" }, "max_score": 1, "hits": [ { "_index": "employee", "_id": "1", "_score": 1, "_source": { "name": "Casey", "age": "13" } }, { "_index": "employee", "_id": "2", "_score": 1, "_source": { "name": "Gavin", "age": 18 } }, { "_index": "employee", "_id": "3", "_score": 1, "_source": { "name": "任子隆", "age": "18" } }, { "_index": "employee", "_id": "4", "_score": 1, "_source": { "name": "任刚", "age": "28" } } ] }, "aggregations": { "group_by_age": { "doc_count_error_upper_bound": 0, "sum_other_doc_count": 0, "buckets": [ { "key": 18, "doc_count": 2 }, { "key": 13, "doc_count": 1 }, { "key": 28, "doc_count": 1 } ] } } }