如何在分组时占用更多字段

时间:2017-08-16 08:15:56

标签: elasticsearch group-by

尝试按顺序对数据进行分组并采用其所有字段。

GET /testnews/default/_search
{
  "size": 10,
  "from":50,
  "query":{
   "multi_match": {
    "query": "serenay",
    "fields": ["Data.Title", "Data.Description", "Data.Tags.Title", "Data.MentionTitle", "Data.Program.title", "Data.Program.description", "Data.Program.original_title"]

   }
  },
   "sort":[{
     "Data.CreatedAt": {
       "order": "desc"
     },
     "Data.ViewCount": {
       "order": "desc"
     }
   }],
   "aggs": {
    "group_by_state": {
      "terms": {
        "field": "Data.Program.title.keyword"
      }
    }
  }
}

但是当我这样做时,它只返回" Program Title"在分组结果中。 就像:

{
  "key": "Kocamın Ailesi",
  "doc_count": 3
}

但我只想要它:

{
"key": "Kocamın Ailesi",
"description": "blabla",
"image": "blabla.jpg",
"date": "YYYY-mm-dd",
"doc_count": 3
}

就像sql

一样
select * from x group by field

1 个答案:

答案 0 :(得分:0)

关于SQL示例,要获取

的行为
columns.Template(@<text>@Html.ActionLink(@item.DocumentPathList.ToString(), "GetDocuments", "Controller") </text>).ClientTemplate("<a href='#=DocumentPathList#</a>").Title("Docs");

你可以聚合a,然后b像这样:

select a, b, count(*) from x group by a, b

但我不认为这就是你要找的东西吗? 如果您想要聚合中的完整文档,可以使用&#34; top_hits&#34;聚合以选择每个聚合中的前n个命中:

"aggs": {
    "group_by_a": {
      "terms": {
        "field": "a"
      },
      "aggs": {
        "group_by_b": {
             "terms": {
                 "field":"b"
              }
          }
       }
    }
  }