gpt4 book ai didi

elasticsearch - 在ElasticSearch上按距离排序

转载 作者:行者123 更新时间:2023-12-03 00:35:18 32 4
gpt4 key购买 nike

我在 flex 搜索中有此查询,以按名称获取位置:

GET places/fastfood/_search
{
"from" : 0, "size" : 10,
"query": {
"bool": {
"must": [
{ "regexp": { "name": ".*name.*"} },
{ "term" : { "location_id" : id } }
]
}
}
}

名称和ID替换为我需要的位置。
现在,我想获取与名称和ID匹配的位置,但更接近所选位置。假设我提供的location_id(城市,区域)中没有麦当劳,我应该最靠近该位置。

我在每个城市/区域中都有一个名为location的字段,它是一个具有经度,纬度的字符串,定义为geo_spot。然后也将经度和纬度定义为long。像这样:
"location": "33.785400,-84.38480",
"latitude": "33.785400",
"longitude": "-84.384800",

所以我尝试像这样添加按位置排序,但出现错误,出了点问题:
GET places/fastfood/_search
{
"from" : 0, "size" : 10,
"query": {
"bool": {
"must": [
{ "regexp": { "name": ".*name.*"} },
{ "term" : { "location_id" : location_id } }
]
}
},
"sort": [
{
"_geo_distance": {
"location": {
"lat": 26.112,
"lon": -73.998
},
"order": "asc",
"unit": "km",
"distance_type": "plane"
}
}
}

我做错了什么?我应该改变什么?

错误是这样的:
{
“error”:“SearchPhaseExecutionException [无法执行阶段[查询],所有分片均失败; shardFailures {[n6y6tjWFRrCP5MXNhEV-YA] [places_v1] [0]:RemoteTransportException [[Boomer] [inet [/ xxxx:y]] [索引:数据/读取/搜索[阶段/查询]]];嵌套:SearchParseException [[places_v1] [0]:查询[+名称:/。hosp./ +位置ID:[10至10]],从[0]开始,大小[10]:解析失败[无法解析源[{\ r \ n \“from \”:0,\“size \”:10,\ r \ n \“query \”:{\ r \ n \“bool \“:{\ r \ n \”必须\“:[\ r \ n {\” regexp \“:{\”名称\“:\”。hosp。\“}}},\ r \ n {\ “term \”:{\“location_id \”:10}} \ r \ n] \ r \ n} \ r \ n},\ r \ n \“sort \”:[\ r \ n {\ r \ n \“_ geo_distance \”:{\ r \ n \“位置\”:{\ r \ n \“lat \”:26.112,\ r \ n \“lon \”:-73.998 \ r \ n},\ r \ n \“order \”:\“asc \”,\ r \ n \“unit \”:\“km \”,\ r \ n \“distance_type \”:\“平面\” \ r \ n } \ r \ n} \ r \ n} \ n]]]];嵌套:JsonParseException [意外的结束标记'}':预期的']'(对于阵列始于[来源:[B @ 4ac877f6;行:10,列:5])\ n在[来源:UNKNOWN;行:23,列:2]]; } {[n6y6tjWFRrCP5MXNhEV-YA] [places_v1] [1]:RemoteTransportException [[Boomer] [inet [/x.x.x.x:y]] [索引:数据/读取/搜索[阶段/查询]]];嵌套:SearchParseException [[places_v1] [1]:查询[+名称:/。hosp./ + location_id:[10 TO 10]],从[0],尺寸[10]:解析失败[无法解析源[{ \ r \ n \“来自\”:0,\“尺寸\”:10,\ r \ n \“查询\”:{\ r \ n \“ bool(boolean) \”:{\ r \ n \“必须\ “:[\ r \ n {\” regexp \“:{\”名称\“:\”。hosp。\“}}},\ r \ n {\” term \“:{\” location_id \“:10 }} \ r \ n] \ r \ n} \ r \ n},\ r \ n \“sort \”:[\ r \ n {\ r \ n \“_ geo_distance \”:{\ r \ n \ “location \”:{\ r \ n \“lat \”:26.112,\ r \ n \“lon \”:-73.998 \ r \ n},\ r \ n \“order \”:\“asc \ “,\ r \ n \” unit \“:\” km \“,\ r \ n \” distance_type \“:\”飞机\“\ r \ n} \ r \ n} \ r \ n} \ n ]]];嵌套:JsonParseException [非预期的结束标记'}':预期的']'(对于阵列始于[来源:[B @ 19f9b52f;行:10,列:5]))\ n,位于[来源:UNKNOWN;行:23,列:2]]; } {[7i0nOGiFR1-OYX8XvL_bSQ] [places_v1] [2]:SearchParseException [[places_v1] [2]:query [+ name:/。hosp./ + location_id:[10 TO 10]],从[0],大小[ 10]:解析失败[无法解析源[{\ r \ n \“from \”:0,\“size \”:10,\ r \ n \“query \”:{\ r \ n \“bool \“:{\ r \ n \”必须\“:[\ r \ n {\” regexp \“:{\”名称\“:\”。hosp。\“}}},\ r \ n {\” term \“:{\” location_id \“:10}} \ r \ n] \ r \ n} \ r \ n},\ r \ n \” sort \“:[\ r \ n {\ r \ n \“_ geo_distance \”:{\ r \ n \“location \”:{\ r \ n \“lat \”:26.112,\ r \ n \“lon \”:-73.998 \ r \ n},\ r \ n \“order \”:\“asc \”,\ r \ n \“unit \”:\“km \”,\ r \ n \“distance_type \”:\“飞机\” \ r \ n} \ r \ n} \ r \ n} \ n]]]];嵌套:JsonParseException [意外的结束标记'}':预期的']'(对于阵列始于[源:[B @ 427094b6;行:10,列:5]))\ n,位于[源:[B @ 427094b6;行:23,列:2]]; } {[n6y6tjWFRrCP5MXNhEV-YA] [places_v1] [3]:RemoteTransportException [[Boomer] [inet [/x.x.x.x:y]] [索引:数据/读取/搜索[阶段/查询]]];嵌套:SearchParseException [[places_v1] [3]:查询[+名称:/。hosp./ + location_id:[10 TO 10]],从[0],尺寸[10]:解析失败[无法解析源[{ \ r \ n \“从\”:0,\“尺寸\”:10,\ r \ n \“查询\”:{\ r \ n \“ bool(boolean) \”:{\ r \ n \“必须\ “:[\ r \ n {\” regexp \“:{\”名称\“:\”。hosp。\“}}},\ r \ n {\” term \“:{\” location_id \“:10 }} \ r \ n] \ r \ n} \ r \ n},\ r \ n \“sort \”:[\ r \ n {\ r \ n \“_ geo_distance \”:{\ r \ n \ “location \”:{\ r \ n \“lat \”:26.112,\ r \ n \“lon \”:-73.998 \ r \ n},\ r \ n \“order \”:\“asc \ “,\ r \ n \” unit \“:\” km \“,\ r \ n \” distance_type \“:\”飞机\“\ r \ n} \ r \ n} \ r \ n} \ n ]]];嵌套:JsonParseException [非预期的结束标记'}':预期的']'(对于阵列始于[来源:[B @ 4f781e6c;行:10,列:5]))\ n,位于[来源:UNKNOWN;行:23,列:2]]; } {[n6y6tjWFRrCP5MXNhEV-YA] [places_v1] [4]:RemoteTransportException [[Boomer] [inet [/x.x.x.x:y]] [索引:数据/读取/搜索[阶段/查询]]];嵌套:SearchParseException [[places_v1] [4]:查询[+名称:/。hosp./ + location_id:[10 TO 10]],从[0],尺寸[10]:解析失败[无法解析源[{ \ r \ n \“从\”:0,\“尺寸\”:10,\ r \ n \“查询\”:{\ r \ n \“ bool(boolean) \”:{\ r \ n \“必须\ “:[\ r \ n {\” regexp \“:{\”名称\“:\”。hosp。\“}}},\ r \ n {\” term \“:{\” location_id \“:10 }} \ r \ n] \ r \ n} \ r \ n},\ r \ n \“sort \”:[\ r \ n {\ r \ n \“_ geo_distance \”:{\ r \ n \ “location \”:{\ r \ n \“lat \”:26.112,\ r \ n \“lon \”:-73.998 \ r \ n},\ r \ n \“order \”:\“asc \ “,\ r \ n \” unit \“:\” km \“,\ r \ n \” distance_type \“:\”飞机\“\ r \ n} \ r \ n} \ r \ n} \ n ]]];嵌套:JsonParseException [意外的结束标记'}':预期的']'(对于阵列始于[来源:[B @ 586764c7;行:10,列:5]))\ n,位于[来源:UNKNOWN;行:23,列:2]]; }]“,
“状态”:400
}

最佳答案

这是语法错误,您应该使用]而不是}结束排序

关于elasticsearch - 在ElasticSearch上按距离排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42674627/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com