当前位置: 首页 > 面试题库 >

Java API中的Elasticsearch内部命中

公西星文
2023-03-14
问题内容

我正在尝试使用Java API通过Elasticsearch实现内部匹配,但是我找不到关于它的许多文档或其他人正在使用的示例。我的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": {}
        }
      }
    }
  }
}

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


问题答案:

请注意,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);


 类似资料:
  • 我试图将两个字段相乘,其中一个字段在“命中”中,另一个字段在“inner_hits”中。 假设我有以下数据。 “尺寸”字段是嵌套类型的。我正在使用以下查询按guid过滤。 查询结果如下 这是我的问题。如何乘以“ratio”(在“hits”中)= 提前感谢!

  • 问题内容: 我们正在尝试在Elasticsearch中找到不同的内部对象。这将是我们案例的最小示例。我们一直坚持下面的映射(更改类型或索引或添加新字段不会有问题,但结构应保持原样): 假设我们有以下示例数据: 当查询街道“贝克街”(以及所需的任何其他选项)时,我们希望获得以下列表: 格式并不重要,但是我们应该能够解析名字和姓氏。只是,由于我们的实际数据集要大得多,因此我们需要使输入项不同。 我们正

  • 内部命令 C-h k 后,回显区提示 Describe key (or click or menu item): 接着 C-x h ,您会发现,缓冲区被水平分割为两个。另一个名为 *help* 缓冲区中显示的内容为 C-x h runs the command mark-whole-buffer which is an interactive compiled Lisp funct

  • 我从用户的相册中获取了一张图像,并将其保存在一个文件夹中。 以下是代码: 然后我读了图像,用代码改变了它的名字: 但当我尝试用新名称重新加载图像时,我得到一个文件未找到异常,这是代码: 这就是日志错误: 08-09 20:23:50.730 15052-15052/? W/System.err:java.io.FileNotFound异常:lol1.png: open失败: ENOENT(没有这样

  • 简而言之,我有一个索引,其中包含从pdf中提取的文本数据,分组为段落(称为块)。每个文档都包含一个“块”列表,其中每个“块”包含文本、页码和边界框的坐标。例如: 我想获得所有文件的列表,例如出现“现金”一词以及出现“现金”一词的所有块。 我的索引映射如下:;注意“块”是如何定义为嵌套对象的: 我的查询如下所示: 现在,令人惊讶的是,我inner_hits回来了,但并不是文件中的每个现金实例都突出显

  • 我不熟悉elasticsearch。我正在探索从elasticsearch中的内容和索引中提取实体的可能性。我尝试在elasticsearch中安装并映射openNLP插件,但遇到了诸如找不到处理程序类等问题。我尝试使用maven构建openNLP插件,但无法实现最终目标。 elasticsearch中是否有其他插件可用于命名实体提取?如果用户不使用插件,可以使用任何其他方式执行NER和索引到ES