【问题标题】:Updating multiple documents in elasticsearch using Java. I am using Elasticsearch 2.3.2使用 Java 在 elasticsearch 中更新多个文档。我正在使用 Elasticsearch 2.3.2
【发布时间】:2016-09-08 22:27:17
【问题描述】:

我想使用 Java Api 使用特定字段更新我的一些索引数据。我已经参考了这个文档https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/java-docs-update.html 并创建了一个 java 程序。我的 Java 程序如下所示:

public class App {

  public static void main(String[] args) throws Exception {
    Client client = TransportClient.builder().build().addTransportAddress(
        new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"),
            9300));
UpdateRequest updateRequest = new UpdateRequest("pibindex", "SearchTech",
        "http://www.sea.com/bundle")
            .script(new Script("ctx._source.default_collection = \"true\""));
    client.update(updateRequest).get();
   }
}

此程序正在根据脚本更新单个文档。 “pibindex”是我的索引的名称,“SearchTech”是我的索引的类型,“http://www.sea.com/bundle”是我的文档的 ID。我想用一个新字段 "wiki_collection":true 更新多个文档,它与 "http://www.sea.com/bundle" 之类的模式匹配。我想使用通配符查询。

我正在尝试用 Java 实现这个 elasticsearch 查询:

POST /pibindex2/_update_by_query
{
  "script": {
    "inline": "ctx._source.wiki_collection=true"
  },
      "query": {
        "wildcard": {
          "url": {
            "value": "http://www.sea.com/bundle/*"
          }
        }
      }
}

对不起,如果我遗漏了一些明显的东西。谢谢。

【问题讨论】:

标签: java elasticsearch querydsl elasticsearch-java-api


【解决方案1】:

你可以试试这个方法:

import static org.elasticsearch.index.query.QueryBuilders.wildcardQuery;

BulkIndexByScrollResponse r = ubqrb.source("twitter")
    .script(script)
    .filter(wilcardQuery("url", "http://www.sea.com/bundle/*"))
    .get();

虽然结果将取决于您的 url 字段是否被分析。

【讨论】:

  • 我的“url”字段未分析,但您的代码正在运行。非常感谢。从前两天开始,我就被困在这件事上,官方文档并没有那么有帮助。再次感谢。
  • 太棒了,很高兴它有帮助!
猜你喜欢
  • 2016-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多