2015-06-04 71 views
0

我有一个带索引40M记录数据的ElasticSearch服务版本1.4。如何在ElasticSearch中获得不同的结果(如果字段相同)

我有具有相同父字段的数据。我想只从同一父母中提取1个唯一结果。

例:

{ 
    "id": "7835", 
    "isbn": "3985", 
    "parent_id": "7819", 
}, 
{ 
    "id": "1835", 
    "isbn": "4935", 
    "parent_id": "7719", 
}, 
{ 
    "id": "2835", 
    "isbn": "9985", 
    "parent_id": "7819", 
} 

预期的结果,我想有是:

{ 
    "id": "7835", 
    "isbn": "3985", 
    "parent_id": "7819", 
}, 
{ 
    "id": "1835", 
    "isbn": "4935", 
    "parent_id": "7719", 
}, 

我已签出聚合: ElasticSearch - Return Unique Values

{ 
    "aggs" : { 
    "parentId" : { 
     "terms" : { "field" : "parent_id" } 
} 

但是响应我得到 - 显示3项(所以最后一个不会被忽略),和我在聚合响应中使用了带有关键字的术语桶,这对我来说并不有用,因为它似乎告诉我文档中每个键的出现次数,而不是所需的输出。

+0

我不知道要完全理解,但你有没有试过在'isbn'(或'id')领域的一个'parent_id'嵌套了另一个'terms'子聚集? – Val

+0

@Val对不起,你是正确的 - 我已经改变了输出,以反映正确的结果 – azngunit81

回答

0

为了不搜索原始文档,您应该在聚合上面添加"size":0

您只能看到每parent_idbuckets响应字段中的文档数量。

{ 
    "size" : 0, 
    "aggs" : { 
    "parentId" : { 
     "terms" : { "field" : "parent_id" } 
    } 
} 
+0

不,匹配不会工作,因为匹配意味着你想要一个特定的parent_id结果 - 我需要确保parent_id结果是返回是独一无二的,抛弃所有重复的人。 – azngunit81

+0

但在您的'预期结果'中,有两个记录具有相同的parent_id。 –

+0

对不起 - 你是对的 - 我改变了输出以反映正确的结果 – azngunit81

相关问题