两个索引文档如下:
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查询?
-
弹性搜索不支持索引之间的联接
原因:弹性搜索不是关系型的,应将非规范化的数据存储在此处。
摘录自以下弹性文件:
在像Elasticsearch的成本高得令人望而却步。相反,Elasticsearch提供了两种设计成水平缩放的连接形式。
-
根据用例使用嵌套或父/子映射来存储数据。
嵌套:如果嵌套文档的基数非常低,并且索引是读取密集型
父级/子级:如果子级的基数高于父级,则需要频繁更新