gpt4 book ai didi

elasticsearch - 为什么在 Elasticsearch 中无法按地理位置查询?

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

所以我正在尝试ElasticSearch,这就是我所做的。

1)在名为“test”的索引上添加了geo_point映射

curl -XPOST localhost:9200/test -d '{
"mappings" : {
"type1" : {
"_source" : { "enabled" : false },
"properties" : {
"location" : { "type" : "geo_point", "index" : "not_analyzed" }
}
}
}
}'

2)为待测文件建立索引:
curl -XPUT 'localhost:9200/test/type1/1?pretty' -d '{
"location" : {
"lat" : 74,
"lon" : 90
}
}'

3)然后通过地理位置过滤器编写了一个查询,如下所示:
curl -XPOST 'localhost:9200/test2/_search?pretty' -d '{
"filtered" : {
"query" : {
"match_all" : {}
},
"filter" : {
"geo_distance" : {
"distance" : "200km",
"location" : {
"lat" : 40,
"lon" : -70
}
}
}
}
}'

为此,我得到:

"error" : "SearchPhaseExecutionException[Failed to execute phase [query], all shards failed; shardFailures {[QpGEHtdcReeYmt8X2tG26g][test2][0]: RemoteTransportException[[Jester][inet[/10.58.91.21:9301]][search/phase/query]]; nested: SearchParseException[[test2][0]: from[-1],size[-1]: Parse Failure [Failed to parse source [na]]]; nested: ElasticsearchParseException[Failed to derive xcontent from org.elasticsearch.common.bytes.ChannelBufferBytesReference@60d8bc76];

最佳答案

首先,在您的查询(即第三段代码)中,localhost:9200/test2/_search?pretty应该是localhost:9200/test/_search?pretty,即您没有查询正确的索引。

然后您的查询只是缺少query关键字(即filtered应该包含在query中),它看起来应该像这样:

curl -XPOST 'localhost:9200/test/_search?pretty' -d '{
"query": {
"filtered": {
"query": {
"match_all": {}
},
"filter": {
"geo_distance": {
"distance": "200km",
"location": {
"lat": 40,
"lon": -70
}
}
}
}
}
}

关于elasticsearch - 为什么在 Elasticsearch 中无法按地理位置查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26429958/

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