弹性搜索中的嵌套文档

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

我们有一个将使用ElasticSearch的程序。我们需要使用连接进行查询,而弹性搜索不支持连接,因此我们留下了嵌套或父子关系。我已经读过使用父子可以导致significant performance issues,所以我们考虑使用嵌套文档。

我们对产品进行索引/查询,但我们也有客户和供应商。所以,这是我对产品映射的思考:

{
    "mappings" : {
      "products" : {
        "dynamic": false,
        "properties" : {
          "availability" : {
            "type" : "text"
          },
          "customer": {
              "type": "nested"
          },
          "vendor": {
              "type": "nested"
          },
          "color" : {
                "type" : "text"
            }
          },
          "created_date" : {
            "type" : "text"
          }
        }
      }
    }
}

客户和供应商是我的映射字段。

这种映射看起来是否正确?由于我将动态设置为false,是否需要指定客户和供应商子文档的内容?如果是这样,我该怎么做?

java elasticsearch document
1个回答
1
投票

我的团队发现父/子关系对我们的表现非常不利,所以我认为您可能正在做出使用嵌套字段的好决定。

如果使用dynamic:false,则不会将未定义的字段添加到映射中。您可以将其设置为true,并在索引时添加这些字段,也可以自己在嵌套文档上定义属性:

{
"mappings" : {
  "products" : {
    "dynamic": false,
    "properties" : {
      ...
      "customer": {
          "type": "nested",
          "properties": {
              "prop a": {...},
              "prop b": {...}
          }
      },
      "vendor": {
          "type": "nested",
          "properties": {
              "prop a": {...},
              "prop b": {...}
          }
      },
      ...
    }
  }
}
}
© www.soinside.com 2019 - 2024. All rights reserved.