当前位置: 首页 > 知识库问答 >
问题:

如何使用Java API设置Ingest attachment(elasticsearch)插件选项?

仉英朗
2023-03-14
String id = ...
Map<String, Object> row = ...
client.prepareIndex(indexName, "my_type", id)
                    .setSource(row)
                    .setPipeline("my_pipeline")
                    .execute();

共有1个答案

孔和畅
2023-03-14

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

文件:

解决方案:

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();
}
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
            }
          }
        }
      }
    ]
  }
}
 类似资料:
  • 在过去的几天里,我尝试为Git版本配置Maven发布插件。我已经为它设置了一个测试项目,我尝试了很多配置,以至于我不知道如何将它们全部显示给您... 在任何情况下,Maven Release插件都只使用当前签出的分支。如果我在主分支上启动发布插件,它会在上面创建标签,但是如果我在开发分支上,它会在那里创建所有东西。 我的实际pom是这样的: 我搜索了很多网站,找不到使用Git的Releasplug

  • 我已经按照本页上的说明进行了操作,但是当我试图运行一个简单的示例代码来测试它时,我得到了一个异常: unsatisfiedLinkError:无法加载库:C:\eclipse 3.8 32位\natives\windows-amd64\gluegen-rt.dll null null

  • 问题内容: 我一直在努力建立我的cordova插件项目。主要由于以下事实: 插件需要位于远离主项目的单独文件夹中 例如,当我使用它来构建项目时,cordova从我的插件文件夹中复制java文件并将其放入文件夹中。 因此,我不应该在Android项目中手动修改插件的.java文件,而必须在插件文件夹中编写代码。 但是我无法将插件文件夹导入到IDE项目中,因此我没有代码完成功能。 没有IDE支持,基本

  • 问题内容: 我正在尝试在ES 1.0.0上设置geo_point对象,并对它运行简单的概念证明查询,但是查询无法返回任何匹配。这是我的设置步骤: 1)创建映射: 2)验证映射: 3)添加一条数据 4)查询该数据: 我的预期结果是,我将返回一击,但查询未返回任何内容。 提前致谢! 问题答案: 我认为您缺少请求的“查询”部分。 我刚刚测试了您的步骤,然后进行更改返回了文档。

  • 问题内容: elasticsearch 中该选项的一个好用例是什么?我在es网站上找不到足够的解释。 问题答案: 范数是一个值,它与字段一起存储在索引中,用于评分。使用默认的评分算法,它结合了一个(用于对短字段进行加权而不是对长字段进行加权)和任何字段级别的提升。您可以在Lucene文档中查看有关它的更多信息。 LengthNorm方面在适当的全文字段上最有帮助。在不需要场增强的结构化字段上,可以

  • 问题内容: 我正在使用Angular JS,我需要使用angular JS设置下拉列表控件的选定选项。如果这很荒谬,请原谅我,但我是Angular JS的新手 这是我的html的下拉列表控件 填充后,我得到 如何设置要选择的控件? 问题答案: 希望我能理解您的问题,但是该指令在控件中的选定项目和的值之间创建了双向绑定。这意味着更改JavaScript或更改控件中的值会更新另一个。如果值为,则应选择