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



两个索引文档如下:

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'

如何使用弹性搜索dsl查询?

  1. 弹性搜索不支持索引之间的联接

    原因:弹性搜索不是关系型的,应将非规范化的数据存储在此处。

    摘录自以下弹性文件:

在像Elasticsearch的成本高得令人望而却步。相反,Elasticsearch提供了两种设计成水平缩放的连接形式。

  1. 根据用例使用嵌套或父/子映射来存储数据。

    嵌套:如果嵌套文档的基数非常低,并且索引是读取密集型

    父级/子级:如果子级的基数高于父级,则需要频繁更新

最新更新