【发布时间】:2019-12-26 08:12:57
【问题描述】:
我在弹性搜索 data-production 中有 1 个索引用于存储文档。该索引在每个文档中都有一个公共字段,名为:document_type,用于过滤不同类型的数据。
我在索引中有 2 种类型的文档:数据生产
一个。 document_type = "用户"
b. document_type = "user_detail"
示例数据
- 用户
{
"user_id" : "123",
"is_trial_active" : "true",
"updated_at" : "1577338950969",
"event_created_at" : "1577338950969",
"document_type" : "user"
}
- 用户详情
{
"user_id" : "123",
"name" : "Shivam",
"gender" : "male",
"event_created_at" : 1575519449473,
"phone_number" : "+91-8383838383",
"document_type" : "user_detail",
"created_at" : 1576049770184
}
注意
- user_id 是两个 document_type 中的公共键
- 使用elasticsearch 7.3.1版本
问题
如何从 document_type="user_details" 中获取 is_trial_active 在 document_type="user" 中不为真的用户的详细信息?
【问题讨论】:
-
嗨@Shivam,我很确定你不能通过单个查询来实现这一点(对不起!)。
-
嘿@baitmbarek,应该有一些方法来实现这一点?一些嵌套查询?我想为 kibana 可视化执行此操作。
-
事实上,这些文档在技术上是不相关的,并且可能分布在不同的分片中。 Kibana 将无法为您执行此操作。
-
如果使用
join数据类型,可以建立它们之间的关系,但会影响性能。如果您愿意,我可以向您展示一个完整的示例。 -
太棒了!我坚持你不能。您可以查看 Javin 或 Assael 的答案。您必须在映射中定义父/子关系才能使其工作。但是你为什么不合并你的文档(用户和详细信息)?
标签: elasticsearch amazon-elastic-beanstalk kibana elastic-stack kibana-7