【问题标题】:return nested fields using elastic4s使用 elastic4s 返回嵌套字段
【发布时间】:2015-08-04 03:01:17
【问题描述】:

我的数据存储在一个嵌套的位置对象中,但不知道如何让 elastic4s 将位置作为搜索结果的一部分返回。我的数据在查询时(从 REST 端点)如下所示:

{
    "_index": "us_large_cities",
    "_type": "city",
    "_id": "AU7ke-xU_N_KRYZ5Iii_",
    "_score": 1,
    "_source": {
        "city": "Oakland",
        "state": "CA",
        "location": {
            "lat": "37.8043722",
            "lon": "-122.2708026"
        }
    }
}

当我尝试像这样使用 elastic4s 查询它时:

search in "us_large_cities"->"city" fields("location", "city", ) query {
filteredQuery filter {
  geoPolygon("location") point(37.9, -122.31) point(37.8, -122.31) point(37.8, -122.25) point(37.9, -122.25)
}

我得到这样的结果:

{
  "_index" : "us_large_cities",
  "_type" : "city",
  "_id" : "AU7keH9l_N_KRYZ5Iig0",
  "_score" : 1.0,
  "fields" : {
    "city" : [ "Berkeley" ]
  }
}

我希望看到“位置”但没有看到的地方。有谁知道我如何指定字段以便我可以实际获取位置?

【问题讨论】:

    标签: scala elasticsearch elastic4s


    【解决方案1】:

    您应该尝试改用source filtering,如下所示。注意使用sourceInclude 而不是fields

    search in "us_large_cities"->"city" sourceInclude("location", "city") query {
    filteredQuery filter {
      geoPolygon("location") point(37.9, -122.31) point(37.8, -122.31) point(37.8, -122.25) point(37.9, -122.25)
    }
    

    【讨论】:

    • 这行得通!我只需要在点击时调用 .getSource 而不是调用 .getFields 等。
    • @DannyHatcher 仅供参考,来源和字段不同,字段显示标记化后的样子,来源是 json 中的原始文档。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-08
    • 2020-02-25
    • 2021-12-10
    • 1970-01-01
    • 2022-01-13
    • 2019-07-18
    • 2016-04-27
    相关资源
    最近更新 更多