Prz*_*oda 5 aggregation elasticsearch
我知道在elasticsearch中没有加入索引的选项,但我需要找到一种方法来解决这个问题:
我有 2 个索引,如 A、B
IndexA有field1、field2、field3等信息
IndexB有field4、field5、field6
如果我将通过查询字段5(在本例中为“测试”)进行搜索,我希望在树中拥有所有关系,例如:
匹配 IndexA 中与 IndexA 中的“field2”和 IndexB 中的“field5”相匹配的所有文档
例如
IndexA 文档:
5、“test”、“test2”、
10、“test”、“test7”
11、“test10” ,“测试11”
IndexB 文档:
1、“test”、(...)
2、“test”、(...)
3、“test100”、(...)
示例响应:
对于 id5(来自索引 A),我想要一个来自索引 B 的 id 为 1 和 2 的对象,例如 {id:5,响应:{1, 2}}
对于 id10(来自索引 A)我想要一个对象id 的 1 和 2 来自索引 B,例如 id11 的 {id:10,响应:{1, 2}}
没有匹配项(“test10”!=“test”)
{id:11,响应:{}}
也许有什么办法可以解决这个问题吗?最后,我需要对四个索引执行此操作(但如果可以在两个索引之间执行此操作,那么我也可以对 4 个索引执行此操作)。
正如你所说,我认为在elasticsearch中这是不可能的。您不应该创建具有此类关系的索引。最好重新考虑您的模型并对数据进行非规范化。
为了解决这个问题,您必须在后端以编程方式进行处理。伪代码:
//Get all objects from indexA
const allIndexA = indexA.getAll();
const result = new Array();
//For each object in indexA, select the corresponding object in indexB
allIndexA.forEach((entryA) => {
const entriesB = indexB.get({field5: entryA.field2});
result.push({
entryA,
entriesB
});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2201 次 |
| 最近记录: |