将具有共同 ID 的多个文档视为 kibana/elasticsearch 中的一个文档
Treat multiple documents with a common id to be treated as one in kibana/elasticsearch
如果我存储在 elasticsearch 中的文档与同一事件相关,则它们会被赋予一个公共 ID (cid)。
kibana 中是否有一种方法可以将这些多个文档视为一个文档?
例如我想找到一个字段的基数。每组具有相同 'cid' 的文档应该只计算一次。
{
"f": "foo",
"cid": 1,
...
}
{
"f": "foo",
"cid": 1,
...
}
{
"f": "foo",
"cid": 2,
...
}
这应该使 foo 项的基数为 2。
当我尝试使用 cid 作为存储桶创建可视化效果时,然后我想将其可视化为子存储桶的字段,我只是在 cids 上获得可视化效果,然后在另一个字段中获得可视化效果。
我不确定 kibana 是否适合这个,或者我最好通过脚本将索引传回以将这些文档合并为一个(看起来有点乱)。
任何想法表示赞赏。
布雷特
请记住,Elasticsearch (ES) 为每个文档分配它自己的 _id
,因此即使您将 cid
视为文档的唯一标识符,ES 也不知道它并会索引您在问题中给出的示例有 3 个不同的文档。您可以更改 ES 为文档生成索引的方式,并使其使用 cid
字段的值。如果 ES 使用 cid
值作为索引,您将只有 2 个文档被索引。请参阅 this question 了解如何让 ES 使用您的 cid
字段作为标识符。
您的另一个选择是让 Kibana 在您按 f
项拆分成桶时计算 cid
字段的唯一值(这将是您的指标)。如果你玩过 Kibana UI,你应该可以完成同样的任务
oldbam 的回答在某种程度上引导我走上了正确的道路,但我的问题含糊不清,无助于提供精确性。
最后我使用的答案是通过 logstash 更新插入而不是插入,同时还使用我的 cid 作为 _id。
所以在 elasticsearch 输出中你必须做:
doc_as_upsert => true # Make sure we use the doc as the values to upsert
action => "update" # update if possible instead of overwriting
document_id => "%{cid}" set the _id to cid
希望能帮助其他人解决这个问题。
如果我存储在 elasticsearch 中的文档与同一事件相关,则它们会被赋予一个公共 ID (cid)。
kibana 中是否有一种方法可以将这些多个文档视为一个文档?
例如我想找到一个字段的基数。每组具有相同 'cid' 的文档应该只计算一次。
{
"f": "foo",
"cid": 1,
...
}
{
"f": "foo",
"cid": 1,
...
}
{
"f": "foo",
"cid": 2,
...
}
这应该使 foo 项的基数为 2。
当我尝试使用 cid 作为存储桶创建可视化效果时,然后我想将其可视化为子存储桶的字段,我只是在 cids 上获得可视化效果,然后在另一个字段中获得可视化效果。
我不确定 kibana 是否适合这个,或者我最好通过脚本将索引传回以将这些文档合并为一个(看起来有点乱)。
任何想法表示赞赏。
布雷特
请记住,Elasticsearch (ES) 为每个文档分配它自己的 _id
,因此即使您将 cid
视为文档的唯一标识符,ES 也不知道它并会索引您在问题中给出的示例有 3 个不同的文档。您可以更改 ES 为文档生成索引的方式,并使其使用 cid
字段的值。如果 ES 使用 cid
值作为索引,您将只有 2 个文档被索引。请参阅 this question 了解如何让 ES 使用您的 cid
字段作为标识符。
您的另一个选择是让 Kibana 在您按 f
项拆分成桶时计算 cid
字段的唯一值(这将是您的指标)。如果你玩过 Kibana UI,你应该可以完成同样的任务
oldbam 的回答在某种程度上引导我走上了正确的道路,但我的问题含糊不清,无助于提供精确性。
最后我使用的答案是通过 logstash 更新插入而不是插入,同时还使用我的 cid 作为 _id。
所以在 elasticsearch 输出中你必须做:
doc_as_upsert => true # Make sure we use the doc as the values to upsert
action => "update" # update if possible instead of overwriting
document_id => "%{cid}" set the _id to cid
希望能帮助其他人解决这个问题。