【问题标题】:How to use Elasticsearch Ingest Attachment Processor Plugin in Java如何在 Java 中使用 Elasticsearch 摄取附件处理器插件
【发布时间】:2020-04-08 19:25:47
【问题描述】:

我正在寻找一种从 Java 高级 REST 客户端使用 Ingest Attachment Processor Plugin 的方法。

您似乎需要做两个步骤,即首先定义一个包含附件处理器的管道(例如,引用字段 data 并使用管道 id attachment em>)

PUT _ingest/pipeline/attachment
{
  "description" : "Extract attachment information",
  "processors" : [
    {
      "attachment" : {
        "field" : "data"
      }
    }
 ]
}

然后你 PUT 引用字段的数据(这里是 data)和管道(这里是 attachment

PUT my_index/my_type/my_id?pipeline=attachment
{
  "data": "e1xydGYxXGFuc2kNCkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0DQpccGFyIH0="
}

现在我想从 Java 高级 REST 客户端执行这两个步骤。看来我可以使用Put Pipeline API 执行第一步(定义管道),但我找不到第二部分的 Java 机制,即在引用管道的同时写入实际数据。

【问题讨论】:

    标签: java rest elasticsearch


    【解决方案1】:

    在Java高级REST客户端中有一个使用IndexRequest索引的方法,在创建它的过程中,您可以通过Java方法设置管道。

    JavaDoc 参考 - https://artifacts.elastic.co/javadoc/org/elasticsearch/elasticsearch/7.6.2/org/elasticsearch/action/index/IndexRequest.html?is-external=true#setPipeline(java.lang.String)

    我希望有这样的代码:

    RestHighLevelClient client = new RestHighLevelClient(
            RestClient.builder(new HttpHost("localhost", 9200, "http")));
    
    final IndexRequest indexRequest = new IndexRequest("index-name", "index-type");
    indexRequest.setPipeline("pipeline-name");
    
    Map<String, Object> jsonMap = new HashMap<>();
    jsonMap.put("data", "e1xydGYxXGFuc2kNCkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0DQpccGFyIH0=");
    
    indexRequest.source(jsonMap);
    final IndexResponse indexResponse = client.index(indexRequest);
    

    【讨论】:

    猜你喜欢
    • 2018-06-03
    • 2017-06-25
    • 2016-10-18
    • 2017-06-18
    • 2017-04-22
    • 2018-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多