繁体   English   中英

Elastic Search中的嵌套文档

[英]Nested documents in Elastic Search

我们有一个将使用ElasticSearch的程序。 我们需要使用联接进行查询,elasticsearch不支持这种联接,因此我们剩下了嵌套关系或父子关系。 我已经读到使用父子可能会导致严重的性能问题 ,因此我们正在考虑使用嵌套文档。

我们对产品进行索引/查询,但我们也有客户和供应商。 因此,这是我对产品映射的想法:

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

在这里,客户和供应商是我的映射字段。

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

我的团队发现父母/孩子的关系对我们的表现非常不利,因此我认为您可能是使用嵌套字段的明智选择。

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

{
"mappings" : {
  "products" : {
    "dynamic": false,
    "properties" : {
      ...
      "customer": {
          "type": "nested",
          "properties": {
              "prop a": {...},
              "prop b": {...}
          }
      },
      "vendor": {
          "type": "nested",
          "properties": {
              "prop a": {...},
              "prop b": {...}
          }
      },
      ...
    }
  }
}
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM