【问题标题】:ElasticSearch mapping for nested enumerable objects (i18n)嵌套可枚举对象的 ElasticSearch 映射 (i18n)
【发布时间】:2012-12-20 15:32:47
【问题描述】:

我不知道如何使用以下结构映射文档以进行搜索:

{
  "_id": "007ff234cb2248",
  "ids": {
    "source1": "123",
    "source2": "456",
    "source3": "789"
  }
  "names": [
    {"en":"Example"}, 
    {"fr":"exemple"}, 
    {"es":"ejemplo"},
    {"de":"Beispiel"}
  ],
  "children" : [
    {
      "ids": {
        "source1": "CXXIII",
        "source2": "CDLVI",
        "source3": "DCCLXXXIX",
      }
      names: [
        {"en":"Example Child"}, 
        {"fr":"exemple enfant"}, 
        {"es":"Ejemplo niño"},
        {"de":"Beispiel Kindes"}
      ]
    }
  ],
  "relatives": {
    // Typically no "ids" at this level.
    "relation": 'uncle',
    "children": [
      {
        "ids": {
          "source1": "0x7B",
          "source2": "0x1C8",
          "source3": "0x315"
        },
        "names": [
          {"en":"Example Cousin"}, 
          {"fr":"exemple cousine"}, 
          {"es":"Ejemplo primo"},
          {"de":"Beispiel Cousin"}
        ]
      }
    ]
  }
}

child 对象可能直接出现在children 部分中,或者进一步嵌套在我的文档中作为uncle.children(在这种情况下是表兄弟)。 IDs 字段为第一层(根)、第二层(孩子和叔叔)和第三层(堂兄弟)所共有,命名结构也为第一层和第三层所共有。

我的用例是能够通过前缀和整个 ID 搜索 ID(嵌套对象)。并且还能够按照(尚未定义的)一组分析器规则搜索子名称。

我还没有找到以任何有用的方式映射这些的方法。我不相信对idsnames 使用相同的技术会取得很大的成功,因为名称和文档根目录之间存在额外级别的映射。

我什至不确定它是否可映射。我至少在原则上相信ids 应该可以映射为术语,也许如果我以某种方式将names 索引为术语。

我简直不知所措,文档似乎没有涵盖这种级别的复杂映射。

我对来自 CouchDB 河的文档的控制有限(阅读:否),上游应用程序已经依赖这种格式,所以我无法真的更改它。

我正在寻找能够通过以下伪条件进行搜索,所有这些都应该匹配:

  • ID:"123"
  • 来源 ID(我不知道如何最好地用伪语言标记)
  • ID前缀:"CDL"
  • 姓名:"Example""Example Child"
  • 本地化名称(我什至不知道如何最好地对其进行伪标记!

当我至少知道如何映射时,我可以自己弄清楚标记化和分析的细节

  • 对象属性的键和值都很重要时的对象
  • 当键和值很重要时可枚举对象。

【问题讨论】:

    标签: lucene indexing full-text-search elasticsearch


    【解决方案1】:

    如果从 ID 到其子项的映射是一对多,那么您可以将子项的名称存储在 child 字段中,因为一个字段可以有多个值。然后,每个文档都会有一个 ID 字段,可能还有一个 relation 字段,以及零个或多个 child 字段。

    【讨论】:

    • 我想我会将文档预处理成一组更简单的文档,并更好地代表我想要搜索的数据,而不是在 elasticsearch 上扔一大块数据并期待它无需修改即可粘贴。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-10
    • 2020-09-27
    • 2012-05-05
    • 2013-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多