elastic2.3自定义插件,监测index变化,postIndex,postCreate的执行让我无法理解
Elasticsearch | 作者 xingpan | 发布于2017年10月06日 | 阅读数:3274
进行es index变化监测的插件,基本代码以及完成,在打印测试时,发现了一个诧异的现象。
创建index后,浏览器插入数据时,几乎都是postIndex发生变化,偶尔postCreate会响应,我没发理解。
删除索引后,创建索引,postCreate没响应。
删除索引后,使用post 直接插入数据,es自动创建index,就会postCreate 一次。
创建index后,浏览器插入数据时,几乎都是postIndex发生变化,偶尔postCreate会响应,我没发理解。
删除索引后,创建索引,postCreate没响应。
删除索引后,使用post 直接插入数据,es自动创建index,就会postCreate 一次。
package index_listener;
import org.elasticsearch.index.engine.Engine;
import org.elasticsearch.index.engine.Engine.Index;
import org.elasticsearch.index.indexing.IndexingOperationListener;
import org.elasticsearch.index.shard.IndexShard;
import org.joda.time.DateTime;
public class AuditIndexOpListener extends IndexingOperationListener{
private IndexShard indexShard;
public void AuditIndexOpListener(IndexShard indexShard) {
this.indexShard = indexShard;
}
// @Override
// public void postIndex(Engine.Index index) {
// System.out.print(index.source());
// }
@Override
public void postIndex(Index index) {
System.out.print("索引变化");
System.out.print(index.source());
System.out.println(index.docs());
System.out.println(index.toString());
System.out.println("tyep");
System.out.println(index.opType());
}
@Override
public void postCreate(Engine.Create create) {
System.out.print("创建index");
System.out.print(create.id());
System.out.print(create.type());
System.out.print((new DateTime()).toString());
System.out.print(create.source());
}
@Override
public void postDelete(Engine.Delete delete) {
System.out.print("删除index");
System.out.print(delete.id());
System.out.print(delete.type());
System.out.print((new DateTime()).toString());
System.out.print(delete.version());
}
}
1 个回复
kennywu76 - Wood
赞同来自: xingpan
我估计你测试的时候,是反复post同一个文档ID,因此只有第一次是新创建一条文档,postCreate被调用,之后都是更新同一个文档,所以调用的是postIndex。