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”
- 名称:
,“示例”
“示例子项”
- 本地化名称(我甚至不知道如何最好地伪标记它
- 当对象属性的键和值都很重要时
- 键和值很重要时的可枚举对象