我正在使用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>
有人可以帮我完成这个任务吗?
答案 0 :(得分:0)
对于每个骆驼的ElasticSearch组件documentation,为了使DELETE操作起作用,Exchange的主体需要是要删除的索引ID。因此,您应该将处理器更改为以下内容:
<a href="{{action('trainingsController@LabelEncoder')}}">ACP</a>