我想将数组存储在长度可变的elasticsearch文档中。理想情况下,可以在查询聚合时合并这个数组。由于业务逻辑,任何查询的数组都将具有相同的长度,但索引中会有不同长度的数组。这里有两个例子文件:ElasticSearch中的可返回但不可查询的字段
{
"array": [1, 2, 3, 4],
"test1": "testing123",
"test2": "testing_another"
}
{
"array": [4, 3, 2, 1],
"test1": "testing123",
"test2": "testing_another"
}
并与聚集我想获得包含
{
"array": [5, 5, 5, 5]
}
我认为这样做将是存储阵列的唯一方法结果作为散列其值然后可以在聚集来概括:
{
"array": {"0": 4, "1": 3, "2": 2, "3": 1}
}
{
"array": {"0": 1, "1": 2, "2": 3, "3": 4}
}
从而使聚集的结果如下(使用“0”,“1”,“2”,“3”字段和)
{
"array": {"0": 5, "1": 5, "2": 5, "3": 5}
}
但似乎随着散列大小的增加,elasticsearch减慢了写入的速度,可能是由于这样一个事实,即索引这些字段,认为我可能会在这些字段上进行查询。这不是必需的,我只需要能够在出路时获得合并(总结)的结果。
这是对情况的合理评估吗?如果是这样,在elasticsearch中是否有一种方法可以指定给定的字段不需要查询?
我理解这里介绍的困境。我希望能够根据搜索返回数据,因此仍然按照预期使用软件。我只是不需要搜索文档 – cmwright
中的所有*字段也@cpard,它看起来像“索引”字段只适用于数据库如何解析字符串/文本。是否有另一个字段,我跳过了? – cmwright
@cmwright我很抱歉,因为我完全错误地解释了你所说的关于将数组存储为哈希的问题。 ES允许使用脚本模块的聚合函数,请参见[链接](http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-aggregations-metrics-sum- aggregation.html)和这个[link](http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/modules-scripting.html)。说实话,我现在没有具体的答案,但我会看看我是否可以将Sum函数与一些脚本相结合。 – cpard