【问题标题】:Elasticsearch type vs index with different schemaElasticsearch 类型与不同架构的索引
【发布时间】:2017-02-23 13:01:58
【问题描述】:

https://www.elastic.co/blog/index-vs-type

什么是类型?

字段需要跨类型保持一致。例如,如果两个字段在同一索引的不同类型中具有相同的名称,则它们需要具有相同的字段类型(字符串、日期等)并且具有相同的配置。

以及“我应该使用哪个”

您的文档是否有类似的映射?如果不是,请使用不同的索引。

但是,在https://www.elastic.co/guide/en/elasticsearch/guide/current/parent-child.html 中仍然提到我们需要将父子文档放在同一个索引中。但是父子之间有多少类似的映射? 和

我要调查的是是否应该将我的 2 个不同的文档放在同一个索引中,这样我就可以进行父子搜索。

但是我从索引与类型的理解是,具有不同架构的文档实际上应该放在不同的索引中,但是父子关系如何工作?

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    “相似映射”仅表示具有相同名称但属于两种不同映射类型的字段必须具有相同的数据类型。

    拥有不同的父子映射类型是完全可以的,唯一的限制是这两个映射不能包含具有相同名称但不同数据类型的字段。

    例如,如果父映射有一个名为age 类型为int 的字段,则子映射类型不能有一个名为age 类型为longstring 的字段

    【讨论】:

      【解决方案2】:

      当您使用相似的索引和不同的类型时,问题是相同的字段具有不同的类型。要处理此问题,您可以对这些字段使用前缀。例如:

      您有一个 score 字段用于类型 usercompany。其中之一是integer,其中之一是string。您应该为这些分数字段指定不同的名称。

      POST main_index/user/_mapping
      {
          "properties": {
              ....
              "user_score": {
                  "type": "integer"
              }
          }
      }
      
      POST main_index/company/_mapping
      {
          "properties": {
              ....
              "company_score": {
                  "type": "string"
              }
          }
      }
      

      您需要对所有相同的命名字段执行相同的操作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-03-15
        • 1970-01-01
        • 2016-12-29
        • 1970-01-01
        • 2017-12-25
        • 2018-11-14
        • 2018-08-28
        • 1970-01-01
        相关资源
        最近更新 更多