gpt4 book ai didi

elasticsearch - 遍历数组的 Kibana 脚本字段

转载 作者:行者123 更新时间:2023-12-02 22:16:27 24 4
gpt4 key购买 nike

我正在尝试使用 metricbeat http 模块来监控 F5 池。

我向 f5 api 发出请求并带回保存到 kibana 的 json。但是 json 包含一组池成员,我想计算增加的​​数量。

建议似乎是这可以通过脚本字段来完成。但是,我无法获取脚本来检索数组。例如

doc['http.f5pools.items.monitor'].value.length()

在预览结果中返回添加了相同的“附加字段”以进行比较:
[
{
"_id": "rT7wdGsBXQSGm_pQoH6Y",
"http": {
"f5pools": {
"items": [
{
"monitor": "default"
},
{
"monitor": "default"
}
]
}
},
"pool.MemberCount": [
7
]
},

如果我尝试
doc['http.f5pools.items']

或类似的我只是得到一个错误:
"reason": "No field found for [http.f5pools.items] in mapping with types []"

谷歌搜索表明 doc 构造不包含数组?
  • 是否可以创建一个可以访问一组值的脚本字段?即是我的代码或我索引数据的方式错误。
  • 如果没有,metricbeats 中是否有替代方法?我不想制作一个全新的 api 来进行计算并添加一个单独的字段

  • - 更新。

    奇怪的是,数组中的数值似乎确实返回了预期的结果。 IE。
    doc['http.f5pools.items.ratio']

    返回
     {
    "_id": "BT6WdWsBXQSGm_pQBbCa",
    "pool.MemberCount": [
    1,
    1
    ]
    },

    -- 更新 2

    好的,所以如果字段中的字符串具有不同的值,那么您将获得所有值。如果它们是相同的,你就得到一个。什么?

    最佳答案

    我正在添加另一个答案,而不是删除我以前的答案,这不是实际问题,但将来仍可能对其他人有所帮助。

    我在 same documentation 中找到了提示:

    Doc values are a columnar field value store



    在谷歌上进一步搜索后,我发现了这个 Doc Value Intro这表示 doc 值本质上是“未倒排索引”,可用于排序等操作;我的假设是,在排序时,您基本上不希望重复相同的值,因此他们使用的数据结构会删除那些重复项。那仍然没有回答为什么它对字符串的工作方式与数字不同。数字被保留,但字符串被过滤成唯一的。

    This “uninverted” structure is often called a “column-store” in other systems. Essentially, it stores all the values for a single field together in a single column of data, which makes it very efficient for operations like sorting.

    In Elasticsearch, this column-store is known as doc values, and is enabled by default. Doc values are created at index-time: when a field is indexed, Elasticsearch adds the tokens to the inverted index for search. But it also extracts the terms and adds them to the columnar doc values.



    更多 deep-dive into doc values revealed it a compression technique这实际上对高效和内存友好操作的值进行了去重。

    这是上面链接中给出的注释,它回答了这个问题:

    You may be thinking "Well that’s great for numbers, but what about strings?" Strings are encoded similarly, with the help of an ordinal table. The strings are de-duplicated and sorted into a table, assigned an ID, and then those ID’s are used as numeric doc values. Which means strings enjoy many of the same compression benefits that numerics do.

    The ordinal table itself has some compression tricks, such as using fixed, variable or prefix-encoded strings.



    此外,如果您不想要这种行为,那么您可以 disable doc-values

    关于elasticsearch - 遍历数组的 Kibana 脚本字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56688792/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com