python - 如何使用 OR 运算符解压缩 Elasticserach 的列表?
问题描述
我有一个这样的术语查询列表
term_query = [
Terms(metadata__resource_type__subtype=["publication-softwaredocumentation"]),
Terms(metadata__resource_type__type=["dataset"]),
]
我必须应用post_filter
这两个查询,看起来像这样
search = search.post_filter(term_query[0] | term_query[1])
我想处理term_query
将有0
或更多元素的情况。如何解压缩由OR
运算符分隔的列表post_filter
?
解决方案
在等待答案的同时,我搜索了 python 本身可用的任何方法来实现这一点。
我发现itertools
和operator
模块运行良好。
解决方案看起来像这样
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)
推荐阅读
- java - Java:当我插入带有标题虚拟节点的循环双向链表时,我的虚拟节点被打乱了。为什么?
- python-3.x - Python 慢慢爬取网站
- php - 如何通过文件ID为谷歌驱动器链接生成直接下载链接
- android - gradle 错误 - com.google.common.collect.ImmutableSet.toImmutableSet()Ljava/util/stream/Collector
- scala - 如何拦截使用 Akka HTTP 发出的 HTTP 客户端请求?
- regex - 在文件中查找字符串并在 Linux 中执行部分数学运算
- ios - iOS 11.2 之前的订阅促销
- android - CountDown Timer 不会在 Android 中停止 Value ListView
- javascript - Ajax Load 在 setTimeout 中递归工作?
- unity3d - 从 Unity 访问 TrueDepth