elasticsearch - 如何使用 Java API 设置摄取附件(elasticsearch)插件选项?

标签 elasticsearch elasticsearch-plugin java

我正在使用Ingest Attachment Processor Plugin在 Elasticsearch 上。我需要使用 Java API 设置附件选项(indexed_charspropertiesignore_missing 等)。我怎样才能做到这一点?

我正在创建索引并设置管道,如下所示:

String id = ...
Map<String, Object> row = ...
client.prepareIndex(indexName, "my_type", id)
                    .setSource(row)
                    .setPipeline("my_pipeline")
                    .execute();

最佳答案

我找到了答案,如果您有嵌套文档,则必须使用 foreach 否则构建 json,如 documentation

文档:

解决方案:

try (XContentBuilder jsonBuilder = XContentFactory.jsonBuilder()) {
    BytesReference pipelineSource = jsonBuilder.startObject()
            .field("description", "Extract attachment information")
            .startArray("processors")
              .startObject()
                .startObject("foreach")
                  .field("field", "my_field")
                  .startObject("processor")
                    .startObject("attachment")
                      .field("field", "_ingest._value.my_base64_field")
                      .field("target_field", "_ingest._value.my_base64_field")
                      .field("ignore_missing", true)
                      .field("indexed_chars", -1)
                    .endObject()
                  .endObject()
                .endObject()
              .endObject()
            .endArray()
            .endObject().bytes();
    client.admin().cluster().preparePutPipeline("my_pipeline",
            pipelineSource, XContentType.JSON).get();
}

你可以手动输入下面的json

结果:

http://localhost:9200/_ingest/pipeline/my_pipeline

{
  "my_pipeline": {
    "description": "Extract attachment information",
    "processors": [
      {
        "foreach": {
          "field": "my_field",
          "processor": {
            "attachment": {
              "field": "_ingest._value.my_base64_field",
              "target_field": "_ingest._value.my_base64_field",
              "ignore_missing": true,
              "indexed_chars": -1
            }
          }
        }
      }
    ]
  }
}

关于elasticsearch - 如何使用 Java API 设置摄取附件(elasticsearch)插件选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47908284/

相关文章:

java - Elasticsearch 和 luke

elasticsearch - 原因以及如何调试 Elasticsearch CircuitBreakingException

Java:加载文件记录数组时出现问题

java - Spring DateTime Conversion服务异常

java - 如何对方法的立即退出进行单元测试

java - 无法连接到 Elasticsearch

elasticsearch - 具有基本身份验证的Elasticsearch Helm chart

elasticsearch - 如何让 elasticsearch-transport-couchbase 与 ES5 + X-Pack 安全一起工作

elasticsearch - 嵌套键/值对的弹性脚本聚合

elasticsearch - Elasticsearch将数据分为索引