gpt4 book ai didi

elasticsearch - ElasticSearch错误:QueryParsingException [[mongoindex]找不到geo_point字段[pin.location]];

转载 作者:行者123 更新时间:2023-12-02 23:37:44 24 4
gpt4 key购买 nike

我是ES的新手。我试图编写Java程序,以针对MongoDB使用ES进行地理搜索(安装了river插件等,并能够使用Java程序进行常规搜索)。
我在mongodb中有一个集合(表),其中存储了latitide和经度值。现在我想检索从Java程序传递来的基于lat和long的记录。

    FilterBuilder filter =  FilterBuilders.geoDistanceFilter("pin.location").lat(10).lon(20).distance(5,DistanceUnit.KILOMETERS).geoDistance(GeoDistance.PLANE);

SearchResponse response = client.prepareSearch(INDEX)
.setTypes(TYPE)
.setSearchType(SearchType.QUERY_AND_FETCH)
.setQuery(matchAllQuery())
.setPostFilter(filter)
.setFrom(0).setSize(60).setExplain(true)
.execute()
.actionGet();

如果执行上述程序,则会收到“QueryParsingException [[mongoindex]未能找到geo_point字段[pin.location]];”;
这个pin.location是什么?我的mongodb表中也有“纬度”和“经度”列,但是在上面的过滤器中,我有“lat(10).lon(20)”。
请帮助我理解。任何快速的帮助,高度赞赏。

全栈停顿:

},“explain”:true}]]]];嵌套:QueryParsingException [[mongoindex]找不到geo_point字段[pin.location]]; }
在org.elasticsearch.action.search.type.TransportSearchTypeAction $ BaseAsyncAction.onFirstPhaseResult(TransportSearchTypeAction.java:233)
在org.elasticsearch.action.search.type.TransportSearchTypeAction $ BaseAsyncAction $ 1.onFailure(TransportSearchTypeAction.java:179)
在org.elasticsearch.search.action.SearchServiceTransportAction $ 12.handleException(SearchServiceTransportAction.java:351)
在org.elasticsearch.transport.netty.MessageChannelHandler.handleException(MessageChannelHandler.java:185)
在org.elasticsearch.transport.netty.MessageChannelHandler.handlerResponseError(MessageChannelHandler.java:175)
在org.elasticsearch.transport.netty.MessageChannelHandler.messageReceived(MessageChannelHandler.java:125)
在org.elasticsearch.common.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70)
在org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
在org.elasticsearch.common.netty.channel.DefaultChannelPipeline $ DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791)处
在org.elasticsearch.common.netty.channel.Channels.fireMessageReceived(Channels.java:296)
在org.elasticsearch.common.netty.handler.codec.frame.FrameDecoder.unfoldAndFireMessageReceived(FrameDecoder.java:462)上
在org.elasticsearch.common.netty.handler.codec.frame.FrameDecoder.callDecode(FrameDecoder.java:443)
在org.elasticsearch.common.netty.handler.codec.frame.FrameDecoder.messageReceived(FrameDecoder.java:303)
在org.elasticsearch.common.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70)
在org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
在org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:559)
在org.elasticsearch.common.netty.channel.Channels.fireMessageReceived(Channels.java:268)
在org.elasticsearch.common.netty.channel.Channels.fireMessageReceived(Channels.java:255)
在org.elasticsearch.common.netty.channel.socket.nio.NioWorker.read(NioWorker.java:88)
在org.elasticsearch.common.netty.channel.socket.nio.AbstractNioWorker.process(AbstractNioWorker.java:108)
在org.elasticsearch.common.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:318)
在org.elasticsearch.common.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:89)
在org.elasticsearch.common.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178)
在org.elasticsearch.common.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
在org.elasticsearch.common.netty.util.internal.DeadLockProofWorker $ 1.run(DeadLockProofWorker.java:42)
在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
在java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617)
在java.lang.Thread.run(Thread.java:745)

谢谢,
斯里

最佳答案

您创建的过滤器基于字段pin.location

FilterBuilders.geoDistanceFilter("pin.location")

这回答了您有关此pin.location是的问题。开始查看索引的映射,以查看要添加到elasticsearch的字段是否为 geo_point 类型。我自己没有使用过蒙哥河,但是根据这个问题,您必须提供自己的 map 。

https://github.com/richardwilly98/elasticsearch-river-mongodb/issues/218#issuecomment-35824681

下面的示例来自上面提到的帖子:
curl -XPUT 'http://localhost:9200/location_test' -d '
{
"mappings": {
"places": {
"properties": {
"location": {
"type": "geo_point"
}
}
}
}
}
'

可在此处找到有关elasticsearch中的geo_point的更多信息:
http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-geo-point-type.html

关于elasticsearch - ElasticSearch错误:QueryParsingException [[mongoindex]找不到geo_point字段[pin.location]];,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28404889/

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