我正在尝试在ES 7中使用Elasticsearch-DSL Python。我将Django模型发送到带有InnerDoc的文档中,用于用户配置文件。在模型中,这是一个ManyToMany关系。
我想在Elasticsearch-DSL中形成一个查询,该查询可以通过单个查询在多种表单上执行MultiMatch,并过滤具有特定InnerDocs的匹配项,且其整数字段大于某个数值,并且得分大于某个阈值-并且布尔值上的错误匹配。在代码注释中解释。
我无法使用Elasticsearch-DSL的文档解决这个问题。即使可以访问InnerDoc中的数据,在访问InnerDoc时也会遇到关键错误。我已经搜索了所有内容,只想编写一个低级查询,但希望了解该库中的查询情况。
# profiles/documents.py
class ProfileDocument(InnerDoc):
username = Text(fields={'raw': Keyword()})
class Index:
name = 'profiles'
# bookmarks/documents.py
class BookmarkDocument(Document):
title = Text() # MultiMatch
description = Text() # MultiMatch
title_suggest = Completion()
created = Date()
last_crawled = Date()
flagged = Boolean() # Boolean, must be false
h1_tag = Text() # MultiMatch
h2_tag = Text() # MultiMatch
saves = Integer() # Must be above 0
savers = Nested(ProfileDocument)
class Index:
name = 'bookmarks'
def add_saver(self, username):
self.savers.append(ProfileDocument(username=username))
def save(self, **kwargs):
return super().save(**kwargs)
# current (incomplete) search query
search = Search()
payload = MultiMatch(query=query,
fields=['title',
'description',
'h1_tag',
'h2_tag',])
search = search.query(payload)
search = search.execute()
result_list = search
我应该能够使用上述指定的过滤器。我不确定如何。