获取针对不同字段的弹性搜索java api查询并进行排序

时间:2017-03-20 12:30:20

标签: java elasticsearch

我在我的java项目中使用弹性搜索2.3版本。我想为弹性搜索执行以下sql查询 -

select fileName from (select distinct fileName from explore_object_metadata order by original_size desc)where rownum <=10

为此我试试 -

 client.prepareSearch()
                    .setIndices()
                    .setTypes(getType())
                    .addSort(fieldSort("sourceSize").order(DESC))
                    .setScroll(new TimeValue(ES_TIMEOUT_MS))
                    .setSize(10);

但是它多次以重复的fileName降序给出了10个结果。如何获得具有唯一文件名的前10条记录,并按弹性搜索的大小按降序排序。

1 个答案:

答案 0 :(得分:1)

获取上述查询的Sense查询是 -

{ 

  "aggs": {
    "id1_count": {
      "terms": { "field": "empname" ,
      "order": {
          "Max_Marks": "desc"
        }
      },

      "aggs": {
        "Max_Marks": {
          "max": {
            "field": "marks"
          }
        },
        "min_marks":{
            "min":{
                "field":"marks"
            }
        }
      }