Apache Camel ElasticSearch删除操作

时间:2019-04-29 19:39:17

标签: java elasticsearch apache-camel

我正在使用Apache Camel Elasticsearch 2,我想删除一条记录。

我搜索了文档,但是对删除操作的示例没有任何了解,但是我可以使用以下代码将记录保存在ElasticSearch中。

保存操作:

from("direct:index")
.process(fooSaveProcessor)
.to("elasticsearch://local?operation=INDEX&indexName=twitter&indexType=tweet");

在FooSaveProcessor.java

public class FooSaveProcessor implements Processor {

    @Override
    public void process(Exchange exchange) {
        Foo foo = exchange.getIn().getBody(Foo.class);
        exchange.getIn().setHeader(ElasticsearchConstants.PARAM_INDEX_ID, foo.id);
        String jsonStr = convertToJSON(foo);
        log.info("Input to Elastic " + jsonStr);
        exchange.getIn().setBody(jsonStr);
    }

}

但是我无法使用以下代码执行删除操作

删除操作:

from("direct:index")
.process(fooDeleteProcessor)
.to("elasticsearch://local?operation=DELETE&indexName=twitter&indexType=tweet");

在fooDeleteProcessor.java

public class FooDeleteProcessor implements Processor {

    @Override
    public void process(Exchange exchange) {
        Foo foo = exchange.getIn().getBody(Foo.class);
        exchange.getIn().setHeader(ElasticsearchConstants.PARAM_INDEX_ID, foo.id);
    }

}

POM:

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-azure-starter</artifactId>
</dependency>
<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-elasticsearch-rest-starter</artifactId>
</dependency>

有人可以帮我完成这个任务吗?

1 个答案:

答案 0 :(得分:0)

对于每个骆驼的ElasticSearch组件documentation,为了使DELETE操作起作用,Exchange的主体需要是要删除的索引ID。因此,您应该将处理器更改为以下内容:

<a href="{{action('trainingsController@LabelEncoder')}}">ACP</a>