Elasticsearch(n)每个属性值的文档

时间:2014-11-08 01:00:33

标签: search elasticsearch lucene

我有一个大约有350万条记录的Elasticsearch实例,我希望在任何给定的搜索中都能快速返回(n)每个属性值的记录。

实施例

Document 1:

{
    "id": 1,
    "gender": "male",
    "name": "Joe"
}

Document 2:

{
    "id": 2,
    "gender": "male",
    "name": "John"
}

Document 3:

{
    "id": 3,
    "gender": "female",
    "name": "Jill"
}

Document 4:

{
    "id": 4,
    "gender": "female",
    "name": "Joan"
}

假设match_all搜索

我只想为gender属性的每个值返回1个文档: 例如,只返回doc 1和doc 3

这显然会分布在更大的结果集中,但结果仍应扩展到每个唯一属性值的(n)docs。

非常感谢任何帮助。

电子

1 个答案:

答案 0 :(得分:2)

使用"性别"的汇总字段和" top_hits"聚合返回n每个点击次数"性别"值:

{
  "size": 0,
  "query": {
    "filtered": {
      "filter": {
        "bool": {
          "should": [{}]
        }
      }
    }
  },
  "aggs": {
    "by_gender": {
      "terms": {
        "field": "gender"
      },
      "aggs": {
        "first_hit": {
          "top_hits": {"size":1}
        }
      }
    }
  }
}