update query index generation elasticsearch nested java-api hit

query - Golpes internos de Elasticsearch en Java api



insert document in index elasticsearch (1)

Estoy intentando implementar éxitos internos con elasticsearch utilizando la API de Java, pero no puedo encontrar mucha documentación sobre ella o ejemplos que otras personas estén usando. Tengo mi búsqueda JSON que funciona de la siguiente manera:

{ "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": {} } } } } }

Veo los métodos InnerHitsBuilder y addInnerHit en la biblioteca elasticsearch, pero no encuentro la documentación sobre cómo usarlos.


Tenga en cuenta que hay muchos casos de prueba en el código fuente de ES donde cada característica está siendo probada, por lo que navegar por el código ES es una fuente de información increíblemente rica. Los hits internos no son una excepción y puedes encontrar todos los casos de prueba de inner_hits en la clase InnerHitsTests.java .

Para que su consulta anterior se pueda crear así:

// 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);