作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
下面的查询是我想使用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/
我是一名优秀的程序员,十分优秀!