Tag: elasticsearch

使用Java在Elasticsearch中按查询更新

我目前正在使用Elasticsearch V2.3.1。 我想在Java中使用以下Elasticsearch查询。 POST /twitter/_update_by_query { “script”: { “inline”: “ctx._source.List = [‘Item 1′,’Item 2’]” }, “query”: { “term”: { “user”: “kimchy” } } } 上述查询搜索名为“kimchy”的“user”,并使用给定值更新“List”字段。 此查询同时更新多个文档。 我在这里阅读了有关Java的更新API https://www.elastic.co/guide/en/elasticsearch/client/java-api/2.3/java-docs-update.html但找不到我要找的内容。 Java的Update API仅讨论一次更新单个文档。 有没有办法更新多个文件? 对不起,如果我错过了一些明显的东西。 感谢您的时间。 更新: 我尝试了下面的Java代码: Client client = TransportClient.builder().addPlugin(ReindexPlugin.class) .build().addTransportAddress(new InetSocketTransportAddress( InetAddress.getByName(“127.0.0.1”), 9300)); UpdateByQueryRequestBuilder ubqrb = UpdateByQueryAction.INSTANCE .newRequestBuilder(client); Script script = new Script(“ctx._source.List = [\”Item […]

NoSuchMethodError:com.google.common.util.concurrent.MoreExecutors.directExecutor在Elastic Search jar上进行conflits

在创建Elasticsearch客户端时,我得到exceptionjava.lang.NoSuchMethodError:com.google.common.util.concurrent.MoreExecutors.directExecutor()Ljava / util / concurrent / Executor; 在一些查找之后,像Guava-18这样的接口在运行时被旧版本覆盖,而Guava-18仅在编译任务期间工作。 我的Maven配置如下: maven-compiler-plugin 3.0 1.7 1.7 org.apache.maven.plugins maven-shade-plugin 2.4.1 package shade 我如何在执行时强制使用Guava-18版本?

ElasticSearch Java API:NoNodeAvailableException:没有可用的节点

public static void main(String[] args) throws IOException { Settings settings = ImmutableSettings.settingsBuilder() .put(“cluster.name”, “foxzen”) .put(“node.name”, “yu”).build(); Client client = new TransportClient(settings) .addTransportAddress(new InetSocketTransportAddress(“XXX.XXX.XXX.XXX”, 9200)); // XXX is my server’s ip address IndexResponse response = client.prepareIndex(“twitter”, “tweet”) .setSource(XContentFactory.jsonBuilder() .startObject() .field(“productId”, “1”) .field(“productName”, “XXX”).endObject()).execute().actionGet(); System.out.println(response.getIndex()); System.out.println(response.getType()); System.out.println(response.getVersion()); client.close(); } 我从我的电脑访问服务器 curl -get http://XXX.XXX.XXX.XXX:9200/ 得到这个 { “status” : […]

弹性搜索Lucene版本错误

我有一个非常简单的ES客户端,它将向本地ES服务器(ES的1.4.1版本)发送查询并获取结果并显示给用户。 现在,我把这个代码带到了一个不同的项目X,并尝试将它与X一起使用,因为我需要一些来自X的API。现在,当我在X中运行相同的代码时,我得到这个错误而不是知道如何解决。 你能帮我解决这个问题吗? 线程“main”中的exceptionjava.lang.NoSuchFieldError:LUCENE_3_6 at org.elasticsearch.Version.(Version.java:45) at org.elasticsearch.node.internal.InternalNode.(InternalNode.java:136) at org.elasticsearch.node.NodeBuilder.build(NodeBuilder.java:159) at org.elasticsearch.node.NodeBuilder.node(NodeBuilder.java:166) at org.bmi.elasticsearch.ranking.TestClass2.main(TestClass2.java:54)