我正在尝试使用 Python 3.7 中的 elasticsearch-dsl 库向 Elasticsearch 编写查询。
我想我设法写了大部分内容,但我遇到了“存在”子句的问题。
这是我要翻译的查询:
{
"query": {
"constant_score": {
"filter": {
"bool": {
"must": {
"term": { "locale": "$locale" }
},
"must_not": {
"term": { "blacklist_country": "$country_code" }
},
"should": [
{ "term": { "whitelist_country": "$country_code" } },
{ "bool": {
"must_not": {
"exists": { "field": "whitelist_country" }
}
}}
]
}
}
}
}
}
这就是我到目前为止所拥有的:
q = Q('constant_score',
filter={Q('bool',
must=[Q('term', locale=locale)],
must_not=[Q('term', blacklist_country=country_code)],
should=[Q('term', whitelist_country=country_code),
Q('bool',
must_not=[Q('exists', field='whitelist_country')]
)
]
)}
)
我希望查询能够正常运行,但我目前收到此错误:
...
must_not=[Q('exists', field='whitelist_country')]
TypeError: unhashable type: 'Bool'