नीचे दी गई क्वेरी वह है जिसे मैं elasticsearch-dsl-py का उपयोग करके बनाना चाहता हूं, लेकिन मुझे नहीं पता कि यह कैसे करें।मैं elasticsearch-dsl-py का उपयोग करके "OR" फ़िल्टर कैसे बना सकता हूं?
GET /my_index/_search
{
"query": {
"filtered": {
"filter": {
"bool": {
"must": [
{
"term": {
"status": "published"
}
},
{
"or": {
"filters": [
{
"range": {
"start_publication": {
"lte": "2015-02-17T03:45:00.245012+00:00"
}
}
},
{
"missing": {
"field": "start_publication"
}
}
]
}
},
{
"or":{
"filters": [
{
"range": {
"end_publication": {
"gte": "2015-02-17T03:45:00.245012+00:00"
}
}
},
{
"missing": {
"field": "end_publication"
}
}
]
}
}
]
}
}
}
}
}
elasticsearch-DSL-py का उपयोग करना, इस के रूप में मैं प्राप्त कर सकते हैं के रूप में करीब है, लेकिन यह एक ही नहीं है। '|' ऑपरेटर 'OR' के बजाय 'चाहिए' खंड में बदल जाता है।
client = Elasticsearch()
now = timezone.now()
s = Search(using=client,
index="my_index"
).filter(
"term", status=PUBLISHED
).filter(
F("range", start_publication={"lte": now},) |
F("missing", field="start_publication")
).filter(
F("range", end_publication={"gte": now},) |
F("missing", field="end_publication")
)
response = s.execute()
यह समाधान पुराना है। एफ अब मौजूद नहीं है और फ़िल्टरिंग के लिए वाक्यविन्यास बदल गया है। – Michael