当前位置: 首页 > 知识库问答 >
问题:

弹性搜索连接/脚本查询,使用子查询的输出

章子航
2023-03-14

我需要在elasticsearch中编写搜索查询,数据如下

{id:"p1",person:{name:"name",age:"12"},relatedTO:{id:"p2"}}
{id:"p2",person:{name:"name2",age:"15"},relatedTO:{id:"p3"}}
{id:"p3",person:{name:"name3",age:"17"},relatedTO:{id:"p1"}}

场景:-用户想要搜索与p2相关的人,并使用每个相关的人找到他们与谁相关

1.首先找到与p2答案=p1相关的人。现在找到与p1答案=p3相关的人。(目前的要求是只进行1级),因此不需要找到与p3相关的人。最终结果应该是p2,p1,p3。
正常场景的我们将编写一个嵌套sql来获得结果。我们如何使用弹性查询语言一次性实现这一点

共有1个答案

黄俊雄
2023-03-14

有一次机会,你需要使用亲子关系,但我首先不会推荐给你,因为它不是很有效。顺便说一句:祖父母和孙子也支持。

您还可以使用应用程序端连接,这意味着您可以执行多个查询,直到得到所需的内容。(请注意,第一个结果集应该非常小,否则可能代价高昂)

我真正建议你的是阅读本文档并重新思考你的用例。如果你想像在facebook或google中那样建模关系,我会告诉你寻找一个非关系型数据库Graph Database。

注:理想情况下,Elasticsearch中的数据是平的,这意味着非规范化。

 类似资料:
  • 我正在LDAP服务器上工作。它有弹性搜索。我必须用一些Javascript代码(JSON格式)发送查询。 这是我的查询: 我试图打印所有结果,其中“server”=“server\u name”(该字段是server:server\u name…)。我认为关于弹性搜索的文档太小了。我找到了一些文档,但都是一样的,对新用户没有帮助。这个例子太简单了。 此查询返回所有结果,包括任何筛选器。 Ps:这就

  • 我有以下格式的弹性搜索文档 } } 我的要求是,当我搜索特定字符串(string.string)时,我只想获得该字符串的FileOffSet(string.FileOffSet)。我该怎么做? 谢谢

  • 我知道elasticsearch允许子聚合(即嵌套聚合),但是我想对“第一次”聚合的结果应用聚合(或者在通用的任何查询中-聚合与否)。 具体示例:我记录有关用户操作的事件(为简单起见,我有带有和的文档)。我可以进行查询,计算每个用户执行的操作数量。但是我想找出“活跃用户”的百分比(或计数)(例如,执行了10个以上操作的用户)。理想的结果是所有用户的直方图,显示用户的活跃程度。 有没有办法创建这样的

  • 我在术语查询中要求弹性搜索中的嵌套字段,其中嵌套字段值应与术语查询中提供的值的数量完全匹配。例如,考虑下面的查询,在这里我们对名为类型的嵌套字段进行查询。 GET资产/_search 索引映射 样本文件: 上述查询应返回字段类型正好有2个值的文档,即“VOD”

  • 我刚加入弹性搜索公司。而不知道如何在JSON请求中对索引和an类型发出正确的请求?(所以我不想像localhost:9200/myindex/mytype/_search那样在URL中使用索引和类型,而是向localhost:9200/_search发出JSON请求) 我试过这样的东西。但我得到的结果是'AAA'索引而不是'BBB'索引。如何只从bbb索引得到结果或者根本没有结果?

  • 实现此功能的推荐方法是什么?注意,我使用的是查询字符串查询。