gpt4 book ai didi

elasticsearch - 地理距离过滤器

转载 作者:行者123 更新时间:2023-11-29 02:50:40 25 4
gpt4 key购买 nike

我收到来自 elasticsearch 的 400 错误请求错误。错误是一个大块响应,但我相信这是关键部分。

failed to find mapper for [location] for geo distance based sort

我正在使用 ES 1.5.1 来查询。我的查询是:

{
query: {
filtered: {
query: {
match: {
title:"amsterdam*"
}
}
}
}, sort: [
{
_geo_distance: {
location: {lat:0, lon:0}, order:"asc", unit:"miles"
}
}
]
}

我已经像文档一样格式化了查询 here .我错过了一步吗?

这是我当前的映射:

{
"gb": {
"mappings": {
"store": {
"dynamic":"false",
"properties": {
"active": {
"type": "b‌​oolean"
},
"deleted": {
"type": "boolean"
},
"location": {
"type":"geo_point"
},
"open": {
"ty‌​pe": "boolean"
},
"suspended": {
"type": "boolean"
},
"title": {
"type":"string"
}
}
}
}
}
}

最佳答案

您的查询很好。字段 location 必须具有映射类型 geo_point,它似乎具有。

试试这个 Marvel Sense 脚本:

(通过运行 bin/plugin -i elasticsearch/marvel/latest 安装 Marvel)

put geo
put geo/geo/_mapping
{
"properties": {
"location": {
"type": "geo_point",
"geohash" : true
}
}
}
put geo/geo/1
{
"location": {
"lat": 0.1,
"lon": 0.1
}
}
put geo/geo/2
{
"location": {
"lat": 50.1,
"lon": 7.1
}
}
put geo/geo/3
{
"location": {
"lat": 5.1,
"lon": 3.1
}
}
get geo/geo/_search
{
"query": {
"match_all": {
}
},
"sort": [
{
"_geo_distance": {
"location": {"lat":0, "lon":0},
"order":"asc",
"unit":"km"
}
}
]
}
get geo/_mapping

出于某种原因,Sense 中的搜索查询对我不起作用。通过 curl 它可以正常工作:

curl -XGET '0:9200/geo/geo/_search?pretty' -d@query.json

关于elasticsearch - 地理距离过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29952191/

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