问题描述
我有多个索引,称为 Post with nested document Comment。
我的文档是这样定义的
class CommentDoc(InnerDoc):
title = Text(analyzer=ngram_analyzer)
content = Text(analyzer=ngram_analyzer)
class PostDoc(Document):
content = Text(analyzer=ngram_analyzer)
comments = nested(Icd10Doc)
id = Integer()
这就是我当前搜索的方式
s = Search(index=['post','blog','artical'])
q = Q("multi_match",query="whatever",fields=['name','title','content'])
s = s.query(q)
那么如何使用嵌套在评论中的 Docs 来搜索 Post 索引?
我应该向 fields 数组添加什么?
解决方法
起初我认为你应该编辑你的模型,但我不确定?:
comments = Nested(Icd10Doc) ---> comments = Nested(CommentDoc)
我在类似的条件下测试过这个查询,我认为它适合你?
nested_q = Q("nested",path='comments',query=Q("multi_match",query="whatever",fields=['comments.content']))
最后,如果你想组合查询,你可以使用这个:
final_q = nested_q & other_q (for AND operation)
final_q = nested_q | other_q (for OR operation)
最后:
s = s.query(final_q)