gpt4 book ai didi

django - 如何在Elasticsearch中运行查询和过滤器的组合?

转载 作者:行者123 更新时间:2023-12-03 00:38:11 25 4
gpt4 key购买 nike

我正在Django的虚拟项目中尝试使用elasticsearch。我正在尝试使用django-elasticsearch-dsl进行搜索。用户可以提供titlesummaryscore进行搜索。搜索应与用户提供的所有信息相匹配,但是如果用户未提供任何有关某物的信息,则应将其跳过。

我正在运行以下代码来搜索所有值。

client = Elasticsearch()

s = Search().using(client).query("match", title=title_value)\
.query("match", summary=summary_value)\
.filter('range', score={'gt': scorefrom_value, 'lte': scoreto_value})

当我对所有字段都有一个值时,搜索可以正常工作,但是例如,如果我不为 summary_value提供值,尽管我希望搜索继续搜索其余值,结果是结果什么都没有。

如果用户不提供值,则字段默认情况下应该具有一些值吗?还是我应该如何处理?

更新1
我尝试使用以下内容,但是无论输入是否给出相同的结果,它都会每次返回。
s = Search(using=client)

if title:
s.query("match", title=title)

if summary:
s.query("match", summary=summary)


response = s.execute()

更新2
我可以使用 to_dict()进行打印。
如果如下所示,则 s为空
s = Search(using=client)
s.query("match", title=title)

如果是这样
s = Search(using=client).query("match", title=title)

然后它可以正常工作,但是如果我添加 s.query("match", summary=summary),它什么也没做。

最佳答案

您需要分配回s:

if title:
s = s.query("match", title=title)

if summary:
s = s.query("match", summary=summary)

关于django - 如何在Elasticsearch中运行查询和过滤器的组合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57447304/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com