gpt4 book ai didi

elasticsearch - 如何在Elasticsearch中进行联接查询?

转载 作者:行者123 更新时间:2023-12-03 01:32:47 24 4
gpt4 key购买 nike

我在进行ES联接查询时遇到了困难,我在Google上搜索了很多,但没有任何帮助。所以我在这里问。

1.映射

我有2个索引,其映射为:

索引日志的映射:

"logs": {
"properties": {
"timestamp": {"type": "date"},
"host": {"type": "keyword"},
"log": {"type": "text"}

}

索引版本的映射:
"versions": {
"properties": {
"host": {"type": "keyword"},
"version": {"type": "keyword"}

}

2.样本数据

假设我有这样的数据:

日志数据:
timestamp:1, host:a1, log: "sample log1"
timestamp:2, host:a1, log: "sample log2"
timestamp:3, host:a1, log: "sample log3"
timestamp:1, host:a2, log: "sample log4"
timestamp:2, host:a2, log: "sample log5"
timestamp:3, host:a2, log: "sample log6"
timestamp:1, host:a3, log: "sample log7"
timestamp:2, host:a3, log: "sample log8"
timestamp:3, host:a3, log: "sample log9"

版本数据:
host:a1, version:v1
host:a2, version:v1
host:a3, version:v2

3.目的和预期结果

我想查询的是:
“查找主机版本等于v1的所有日志”

结果应为:
timestamp:1, host:a1, log: "sample log1"
timestamp:2, host:a1, log: "sample log2"
timestamp:3, host:a1, log: "sample log3"
timestamp:1, host:a2, log: "sample log4"
timestamp:2, host:a2, log: "sample log5"
timestamp:3, host:a2, log: "sample log6"

我该怎么办?请帮忙。

最佳答案

Elasticsearch不是关系数据库,因此不支持联接。

解决此问题的唯一方法(有很多缺点)是使用parent-child(或v6中的join data type)或nested docs

**这两个选项的伸缩性都不佳,可能会导致性能问题。

关于elasticsearch - 如何在Elasticsearch中进行联接查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54763276/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com