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

Elasticsearch结果中的返回距离?

冯宏浚
2023-03-14
问题内容

简而言之,当不使用_geo_distance排序时,是否有一种方法可以返回地理距离?

更新:为澄清起见,我希望结果按随机顺序排列并包含距离。


问题答案:

是的,您可以使用脚本字段。

例如,假设您的文档具有一个名为的地理位置字段location,则可以使用以下内容:

(请注意,\u0027只是一个转义的单引号,所以\u0027location\u0027真的是'location'

curl -XGET 'http://127.0.0.1:9200/geonames/_search?pretty=1'  -d '
{
   "script_fields" : {
      "distance" : {
         "params" : {
            "lat" : 2.27,
            "lon" : 50.3
         },
         "script" : "doc[\u0027location\u0027].distanceInKm(lat,lon)"
      }
   }
}
'

# [Thu Feb 16 11:20:29 2012] Response:
# {
#    "hits" : {
#       "hits" : [
#          {
#             "_score" : 1,
#             "fields" : {
#                "distance" : 466.844095463887
#             },
#             "_index" : "geonames_1318324623",
#             "_id" : "6436641_en",
#             "_type" : "place"
#          },
... etc

如果还希望_source返回该字段,则可以如下指定:

curl -XGET 'http://127.0.0.1:9200/geonames/_search?pretty=1'  -d '
{
   "fields" : [ "_source" ],
   "script_fields" : {
      "distance" : {
         "params" : {
            "lat" : 2.27,
            "lon" : 50.3
         },
         "script" : "doc[\u0027location\u0027].distanceInKm(lat,lon)"
      }
   }
}
'


 类似资料:
  • 我使用了以下映射:我修改了英语分析器来使用ngram分析器,如下所示,这样我应该能够在以下情况下进行搜索:1]部分搜索和特殊字符搜索2]以获得语言分析器的优势 将我的数据索引如下:

  • 问题内容: 我实现了一个脚本字段,该字段返回的距离如下所示:Elasticsearch结果中的返回距离? Ruby: 但是返回的距离不正确。如果该点很近,则距离会更正确,但是随着距离的增加,它会变得越来越不正确。 似乎无法弄清楚我在做什么。 问题答案: distanceInKm()将距离计算为平面上的点,该速度很快但不太准确。尝试改用arcDistanceInKm()。

  • 问题内容: 我正在通过ElasticSearch NEST C#客户端运行一个简单的查询。通过http运行相同的查询时收到结果,但是从客户端返回的文档数量为零。 这就是我填充数据集的方式: 此POST请求返回JSON结果: 这是我没有返回任何代码的代码。 我想念什么?提前致谢 .. 问题答案: NEST尝试猜测类型和索引名称,在您的情况下,它将使用/ blog / blogentries 因为您告

  • 我有一个带有两个衰减函数(ES 2.4.4)的查询,我使用对查询项中的衰减函数得分求和。对于测试,我使用来防止任何其他分数(来自查询)影响我的分数(我想测试衰减函数)。 这些是我的衰减函数: 我的结果包括2篇不同日期的文章(2017-08-28,2009-05-08)具有相同的优先级(1000)和相同的分数!(13.122)怎么会这样?为什么没有获得更好的分数?所以我试图解释查询。 对于2017-

  • 我想查询表A中每个点(id)到表B中每个多边形(id)的距离。对于距离计算,我使用ST_距离。但是,ST_Distance(显然)返回到每个多边形的距离。但我只需要每个点的“最接近”结果。到目前为止,我尝试了下面的查询,它返回了正确的结果,但是(当然)只返回了一个点。 结果应该是这样的: 你有什么提示吗?非常感谢你。 更新1 运行上述查询(3h 24m)后,返回的结果为空。然而,应该有一个结果。括

  • 我正在建立一个弹性搜索索引,并希望它的行为(返回结果)某种方式。我已经建立了父母/孩子的关系。 我已经用一些“父”文档和一堆父文档设置正确的“子”文档填充了它。 当我使用普通搜索查询搜索内容时,我当然会返回所有匹配的文档。父文档和子文档,但两者之间没有联系。如果我使用has_child筛选器搜索内容,它将正确地搜索子文档,并向我返回匹配的父文档: 问题是,我想搜索孩子,并在一个文档中找回父母和孩子