首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何用OR运算符解压Elasticserach的列表?

如何用OR运算符解压Elasticserach的列表?
EN

Stack Overflow用户
提问于 2021-04-07 09:07:09
回答 1查看 31关注 0票数 0

我有一个这样的术语查询列表

代码语言:javascript
运行
复制
term_query = [
    Terms(metadata__resource_type__subtype=["publication-softwaredocumentation"]),
    Terms(metadata__resource_type__type=["dataset"]),
]

我必须在这两个查询中应用post_filter,这两个查询都是这样的

代码语言:javascript
运行
复制
search = search.post_filter(term_query[0] | term_query[1])

我想处理term_query将有0或更多元素的情况。如何在OR中解压由post_filter运算符分隔的列表

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-14 09:17:08

在等待答案的同时,我搜索了python本身中可用的任何方法来实现这一点。

我发现itertoolsoperator模块工作得很好。

解决方案如下

代码语言:javascript
运行
复制
import itertools, operator

term_queries = [
    Terms(metadata__resource_type__subtype=["publication-softwaredocumentation"]),
    Terms(metadata__resource_type__type=["dataset"]),
]

final_query = list(itertools.accumulate(term_queries, operator.or_))[-1]
search = search.post_filter(final_query)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66982877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档