首页 > 解决方案 > 带有 Elasticsearch 插件的 Couchbase(在数据库中找不到任何文档)

问题描述

我正在尝试将ElasticSearch (version 5.6.7)连接到Couchbase (version 5.1.0)

我正在使用Elasticsearch Transport Couchbase(版本 elasticsearch-transport-couchbase-3.0.1-cypress-es5.6.7.zip),它应该适用于我的 ElasticSearch 版本(版本 5.6.7)。

我正在遵循这些官方说明:

1) https://developer.couchbase.com/documentation/server/5.1/connectors/elasticsearch/getting-started.html

2) https://github.com/couchbaselabs/elasticsearch-transport-couchbase

一切似乎都很好,但是当我尝试使用 elasticsearch 查询我的沙发库时,我总是得到 0 个结果

{"took":2,"timed_out":false,"_shards":{"total":5,"successful":5,"skipped":0,"failed":0},"hits":{"total":0,"max_score":null,"hits":[]}}

我正在使用此链接查询我的数据库(其中elastic-bucket是在 elasticsearch 配置期间创建的索引):http://localhost:9200/elastic-bucket/_search?q=photo

我不知道该怎么做,因为我不明白问题到底是什么。

我只能在 ElasticSearch 中找到与日志消息相关的内容:

java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter
at org.elasticsearch.transport.couchbase.capi.ElasticSearchCAPIBehavior.bulkDocs(ElasticSearchCAPIBehavior.java:360) ~[elasticsearch-transport-couchbase-3.0.1-cypress-es5.6.7-all.jar:?]
at com.couchbase.capi.servlet.CAPIServlet.handleBulkDocs(CAPIServlet.java:532) ~[couchbase-capi-server-1.6.3.jar:?]
at com.couchbase.capi.servlet.CAPIServlet.service(CAPIServlet.java:89) ~[couchbase-capi-server-1.6.3.jar:?]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) ~[javax.servlet-api-3.1.0.jar:3.1.0]
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:845) ~[jetty-servlet-9.3.13.v20161014.jar:9.3.13.v20161014]
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:584) [jetty-servlet-9.3.13.v20161014.jar:9.3.13.v20161014]
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) [jetty-server-9.3.13.v20161014.jar:9.3.13.v20161014]
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:513) [jetty-security-9.3.13.v20161014.jar:9.3.13.v20161014]
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226) [jetty-server-9.3.13.v20161014.jar:9.3.13.v20161014]
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1180) [jetty-server-9.3.13.v20161014.jar:9.3.13.v20161014]
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:512) [jetty-servlet-9.3.13.v20161014.jar:9.3.13.v20161014]
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) [jetty-server-9.3.13.v20161014.jar:9.3.13.v20161014]
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1112) [jetty-server-9.3.13.v20161014.jar:9.3.13.v20161014]
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) [jetty-server-9.3.13.v20161014.jar:9.3.13.v20161014]
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134) [jetty-server-9.3.13.v20161014.jar:9.3.13.v20161014]
at org.eclipse.jetty.server.Server.handle(Server.java:523) [jetty-server-9.3.13.v20161014.jar:9.3.13.v20161014]
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:320) [jetty-server-9.3.13.v20161014.jar:9.3.13.v20161014]
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:251) [jetty-server-9.3.13.v20161014.jar:9.3.13.v20161014]
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:273) [jetty-io-9.3.13.v20161014.jar:9.3.13.v20161014]
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95) [jetty-io-9.3.13.v20161014.jar:9.3.13.v20161014]
at org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:93) [jetty-io-9.3.13.v20161014.jar:9.3.13.v20161014]
at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.executeProduceConsume(ExecuteProduceConsume.java:303) [jetty-util-9.3.13.v20161014.jar:9.3.13.v20161014]
at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceConsume(ExecuteProduceConsume.java:148) [jetty-util-9.3.13.v20161014.jar:9.3.13.v20161014]
at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:136) [jetty-util-9.3.13.v20161014.jar:9.3.13.v20161014]
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:671) [jetty-util-9.3.13.v20161014.jar:9.3.13.v20161014]
at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:589) [jetty-util-9.3.13.v20161014.jar:9.3.13.v20161014]
at java.lang.Thread.run(Unknown Source) [?:?]

有人有任何想法吗?提前致谢!

标签: elasticsearchcouchbaseelasticsearch-plugin

解决方案


该异常表明该插件不喜欢在 Java 9 下运行。感谢您报告此事。

在短期内,您可以尝试使用 Java 8 运行 Elasticsearch,或尝试如何解决 java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException in Java 9中介绍的其他解决方案之一

另一件要尝试的事情是查看您是否可以通过 ID 获取文档,使用类似的 URL http://localhost:9200/elastic-bucket/<document-type>/<document-id><document-type>通常是在哪里,couchbaseDocument除非您已将插件配置为使用其他东西)。如果您可以通过这种方式获取文档,但不能通过搜索获取​​,那么日志中的堆栈跟踪可能是不相关的,并且映射类型的定义方式可能存在问题。

免责声明:我为 Couchbase 工作并维护 Elasticsearch 连接器。


推荐阅读