比较Elasticsearch中的文档

时间:2016-03-23 22:18:16

标签: elasticsearch

我是Elasticsearch的新手,我正在尝试获取所有具有相同移动类型的文档。我找不到相关问题而且目前卡住了。

curl -XPUT 'http://localhost:9200/sessions/session/1' \
     -d '{"useragent": "1121212","mobile": "android", "browser": "mozilla", "device": "computer", "service-code": "1112"}'

编辑 -

我需要Elasticsearch相当于以下内容 -

SELECT * FROM session s1, session s2 
where s1.device == s2.device

1 个答案:

答案 0 :(得分:0)

您要实现的目标是通过自我加入在字段上对文档进行简单分组。

类似的分组概念可以通过弹性搜索中的terms aggregation来实现。虽然此聚合仅返回组级别指标,如count,sum等。它不会返回单个记录。

但是,还有另一种聚合可以作为子聚合应用于术语聚合top-hits aggregations

  

top_hits聚合器可以有效地用于对结果集进行分组   某些字段通过桶聚合器。一个或多个桶   聚合器确定结果集被切片的属性   成。

选项

  • from - 您要获取的第一个结果的偏移量。
  • size - 每个桶返回的最高匹配匹配数的最大数量。默认情况下,返回前三个匹配的匹配。
  • sort - 应如何对最匹配的匹配进行排序。默认情况下,命中按主查询的分数排序。

以下是示例查询

{
  "query": {
    "match_all": {}
  },
  "aggs": {
    "top-mobiles": {
      "terms": {
        "field": "device"
      },
      "aggs": {
        "top_device_hits": {
          "top_hits": {}
        }
      }
    }
  }
}