2015-09-28 7 views
5

में लोचदार खोज आंतरिक हिट जावा एपीआई का उपयोग करके लोचदार खोज के साथ आंतरिक हिट को कार्यान्वित करने की कोशिश कर रहा हूं, लेकिन मुझे उस पर कोई भी दस्तावेज या उदाहरण नहीं मिल रहा है जो अन्य लोग उपयोग कर रहे हैं।जावा एपीआई

{ 
    "query": { 
    "filtered": { 
     "query": { 
     "match_all": {} 
     }, 
     "filter": { 
     "nested": { 
      "path": "locations", 
      "filter": { 
      "geo_distance": { 
       "distance": "20km", 
       "locations.address.geoLocation": { 
       "lat": 38.07061, 
       "lon": -76.77514 
       } 
      } 
      }, 
      "inner_hits": {} 
     } 
     } 
    } 
    } 
} 

मैं elasticsearch पुस्तकालय में एक InnerHitsBuilder और addInnerHit की प्रक्रिया देखें, लेकिन मैं उन्हें कैसे उपयोग करने पर प्रलेखन नहीं मिल सकता है: मैं अपने JSON खोज है कि इस प्रकार काम करता है।

उत्तर

7

ध्यान दें कि ईएस स्रोत कोड में बहुत से परीक्षण मामले हैं जहां प्रत्येक सुविधा का परीक्षण किया जा रहा है, इसलिए ईएस कोड ब्राउज़ करना जानकारी का अविश्वसनीय रूप से समृद्ध स्रोत है। आंतरिक हिट कोई अपवाद नहीं बनाता है और आप InnerHitsTests.java कक्षा में सभी inner_hits परीक्षण मामलों को पा सकते हैं।

तो आपकी क्वेरी के ऊपर इस प्रकार बनाया जा सकता है:

// build the geo_distance filter 
    GeoDistanceFilterBuilder geo = FilterBuilders 
      .geoDistanceFilter("locations.address.geoLocation") 
      .distance("20km") 
      .lat(38.07061) 
      .lon(-76.77514); 

    // build the nested filter and add inner_hits 
    NestedFilterBuilder nested = FilterBuilders 
      .nestedFilter("locations", geo) 
      .innerHit(new QueryInnerHitBuilder()); <--- this is what you're looking for 

    // wrap it all inside a filtered query 
    FilteredQueryBuilder query = QueryBuilders 
      .filteredQuery(QueryBuilders.matchAllQuery(), nested); 
संबंधित मुद्दे