elasticsearch,Lucene,Indexing,Full Text Search,elasticsearch" /> elasticsearch,Lucene,Indexing,Full Text Search,elasticsearch" />

Lucene 嵌套可枚举对象的ElasticSearch映射(i18n)

Lucene 嵌套可枚举对象的ElasticSearch映射(i18n),lucene,indexing,full-text-search,elasticsearch,Lucene,Indexing,Full Text Search,elasticsearch,我不知道如何用以下结构映射搜索文档: { "_id": "007ff234cb2248", "ids": { "source1": "123", "source2": "456", "source3": "789" } "names": [ {"en":"Example"}, {"fr":"exemple"}, {"es":"ejemplo"}, {"de":"Beispiel"} ], "children" :

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

{
  "_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
部分中,或者在我的文档中进一步嵌套为
叔叔.children
(在本例中为堂兄弟)。IDs字段对于级别1(根)、级别2(子级和叔叔)和级别3(表亲)是通用的,命名结构对于级别1和级别3也是通用的

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

我还没能找到一种方法,以任何有用的方式绘制这些地图。对于
ids
names
,我认为使用相同的技术不会有多大的成功,因为名称和文档根之间有一个额外的映射级别

我甚至不确定它是否可以映射。我相信至少在原则上,
id
应该可以映射为术语,如果我以某种方式将
名称
索引为术语,可能也是这样

我简直不知所措,文档似乎没有涵盖任何类似于这种复杂映射级别的内容

由于文档来自CouchDB river,我限制了(阅读:否)对文档的控制,而上游应用程序已经依赖于这种格式,因此我无法真正更改它

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

  • ID:
    “123”
  • 源代码ID(我不知道如何最好地用伪语言标记)
  • ID前缀:
    “CDL”
  • 名称:
    “示例”
    “示例子项”
  • 本地化名称(我甚至不知道如何最好地伪标记它
当我至少知道如何映射时,我可以自己弄清楚标记和分析的细节

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

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

如果g从一个ID到它的子项是1对多的,然后你可以将子项的名称存储在一个child字段中,因为一个字段可以有多个值。然后每个文档将有一个ID字段,可能有一个relationship字段,以及零个或多个child字段。

我想我将对d进行预处理将文档转换成一组更简单的文档,更好地表示我要搜索的数据,而不是将一大块数据扔进elasticsearch,并期望它不经修改就能保持不变。我想我将把文档预处理成一组更简单的文档,更好地表示我要搜索的数据rch,而不是在elasticsearch中抛出一大块数据,并期望它在不修改的情况下保持不变。