मेरे पास 3 दस्तावेज हैं,
{
"category":[{"id":"1"},{"id":"2"},{"id":"3"}]
}
{
"category":[{"id":"1"},{"id":"4"}]
}
{
"category":[]
}
मैं वह दस्तावेज कैसे पा सकता हूं, जिसमें mysql की तरह (2,3) श्रेणी है। यह भी कि किस प्रकार की DSL क्वेरी मुझे java एपीआई क्वेरी बिल्डर में उपयोग करने की आवश्यकता है
उत्तर:
उत्तर № 1 के लिए 1आप उन सभी दस्तावेज़ों को खोजने के लिए क्लॉस क्वेरी का उपयोग कर सकते हैं, जिनमें अनुरोधित आईडी शामिल हैं। यहां बताया गया है कि क्वेरी DSL कैसे होती है
{
"query": {
"bool": {
"should": [
{"term": {
"category.id": {
"value": "2"
}
}},
{"term": {
"category.id": {
"value": "3"
}
}
}
]
}
}
}
यहाँ आप जावा एपीआई का उपयोग कैसे करेंगे
QueryBuilders.boolQuery().should(QueryBuilders.matchQuery("category.id", "2"))
.should(QueryBuilders.matchQuery("category.id", "1"));
यदि आईडी फ़ील्ड का विश्लेषण नहीं किया गया है, तो आप शर्तों के क्वेरी का उपयोग भी कर सकते हैं। अधिक जानकारी यहाँ https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-terms-query.html
जवाब के लिए 0 № 2
यहां बताया गया है कि आपकी क्वेरी कैसी दिखनी चाहिए:
{
"query": {
"bool": {
"filter": [
{
"term": {
"category.id": "1"
}
},
{
"term": {
"category.id": "2"
}
}
]
}
}
}
जवाब के लिए 0 № 3
इस कदर:
{
"filter": {
"terms": {
"category.id": ["2", "3"]
}
}
}