Elasticsearch内部命中java api

Cha*_*dor 5 hit nested java-api elasticsearch

我正在尝试使用Java API实现弹性搜索的内部命中,但我找不到任何关于它的文档或其他人正在使用的示例.我有我的JSON搜索,其工作方式如下:

{
  "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": {}
        }
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我在elasticsearch库中看到了InnerHitsBuilder和addInnerHit方法,但我找不到有关如何使用它们的文档.

Val*_*Val 7

需要注意的是有大量的测试用例在各功能的被测试的ES源代码,所以浏览ES代码是一个令人难以置信的丰富的信息源.内部命中也不例外,你可以inner_hitsInnerHitsTests.java课堂上找到所有测试用例.

所以你上面的查询可以像这样创建:

    // 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);
Run Code Online (Sandbox Code Playgroud)