Logstash OpenSearch 中的嵌套字段未作为数组的

问题描述 投票:0回答:1

我在这里失去了理智,OpenSearch 的文档完全没有帮助,因为一切都是硬编码值。

无论如何,我有一个嵌套字段,它应该被展平为数组,但它不起作用,所以我显然错过了一些东西(忽略该字段的愚蠢命名;这样我们就不必做出巨大的改变到我们当前正在使用的插件) 使用此命令创建索引:

curl -XPUT -u "$OPENSEARCH_USER:$OPENSEARCH_PASSWORD" $OPENSEARCH_HOST_URL/mechanism-search -H "Content-Type: application/json" -d @/tmp/mechanism-search-index.json

机制搜索索引.json

{ "mappings": { "properties": { "mechanism": { "properties": { "mechanism_id" : { "type" : "integer" }, "mechanism_name": { "type": "text" } } }, "projects": { "type" : "nested", "include_in_parent": "true", "properties": { "project_id__type_list": { "type": "integer" }, "project_name__type_list": { "type": "text" } } } } }

项目应该是机制的嵌套字段,因此我希望通过 
GET Mechanism-search/_search

: 返回类似的内容 "mechanism_id" : "1111", "mechanism_name" : "Test Mech", "projects" : [ { "project_id__type_list" : 1, "project_name__type_list" : "testing1" }, { "project_id__type_list" : 2, "project_name__type_list" : "testing2" }, { "project_id__type_list" : 3, "project_name__type_list" : "testing3" }, { "project_id__type_list" : 4, "project_name__type_list" : "testing4" } ]

相反,我得到:

"mechanism_id" : "1111", "mechanism_name" : "Test Mech", "project_id__type_list" : 1, "project_name__type_list" : "testing1"

映射中的字段名称与数据库视图中的字段名称完全匹配。当数据库中有多行时,为什么它只为机制抓取单个项目? Opensearch 的 
Documentation

全部使用 PUTS 并将值直接硬编码到文档;我该如何让它自动执行?我来自 SOLR,这些都没有任何意义,而且看起来过于复杂。 机制和项目通过交叉表连接,OpenSearch 使用的数据库视图通过连接指向它。 示例数据库查看数据:

enter image description here

elasticsearch logstash opensearch amazon-opensearch nested-fields
1个回答
0
投票

要将多个项目记录组合在一起,您可以使用

聚合过滤器

© www.soinside.com 2019 - 2024. All rights reserved.