gpt4 book ai didi

python-3.x - 如何使用elasticsearch-dsl-py创建 “In”条件过滤器?

转载 作者:行者123 更新时间:2023-12-03 01:13:36 24 4
gpt4 key购买 nike

下面的查询是我想使用elasticsearch-dsl-py构造的,但是我不知道该怎么做。

GET /my_index/_search
{
"query": {
"filtered": {
"filter": {
"bool": {
"should": [
{
"term": {
"status": "a"
},
"term": {
"status": "b"
},
"term": {
"status": "c"
}
}
]
}
}
}
}
}
我只想以SQL格式执行如下查询
select * from my_index where status in ("a","b","c")
使用elasticsearch-dsl-py,这与我所能接近的差不多,但是并不相同。
class MyIndex(Document):

status = Keyword() / Text()



MyIndex.search().filter('should', status=["a","b","c"])

最佳答案

完成此操作的另一种方法是对每个数组使用terms查询,因​​为每个数组元素都进行了隐式“或”运算。另外,我不确定您正在运行哪个版本的ES,但很早就知道版本5中的 filtered has been replaced by bool 。因此您的查询可以这样重写:

GET /my_index/_search
{
"query": {
"bool": {
"filter": {
"terms": {
"status": ["a", "b", "c"]
}
}
}
}
}
使用 elasticsearch-dsl-py,它转换为:
s = Search()
s = s.filter('terms', status=['a', 'b', 'c'])

关于python-3.x - 如何使用elasticsearch-dsl-py创建 “In”条件过滤器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63411075/

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