如何使用elasticsearch dsl py连接两个elasticsearch索引?

uyto3xhc  于 2021-06-15  发布在  ElasticSearch
关注(0)|答案(1)|浏览(410)

两个索引文件如下:

class First(Document):

    class Index:
       name  = 'first'

   case_id = Keyword()
   name = Text()

class Second(Document):

    class Index:
       name  = 'second'

   case_id = Keyword()
   status = Text()

我只想以sql格式执行下面这样的查询

select * from first as f, second as s where s.case_id = f.case_id or s.status = 'xyz'

如何使用ElasticSearchdsl查询?

hmmo2u0o

hmmo2u0o1#

ElasticSearch不支持索引之间的联接
原因:ElasticSearch不是关系型的,非规范化的数据应该存储在这里。
摘自以下弹性文件:
在像elasticsearch这样的分布式系统中执行完整的sql样式的连接代价高昂。相反,elasticsearch提供了两种连接形式,它们被设计成水平伸缩。
根据用例,使用嵌套或父/子Map来存储数据。
嵌套:如果嵌套文档的基数很低并且索引是读密集型的
父/子:如果子对象的基数高于父对象,则需要频繁更新父/子对象

相关问题