您的位置:首页 > 其它

elasticsearch 学习历程

2017-09-15 11:16 169 查看
今天需要使用java更新es的嵌套属性的值。 找了好久终于找到了对应的api。

原文地址 https://github.com/elastic/elasticsearch-lang-groovy/blob/master/src/test/java/org/elasticsearch/script/groovy/GroovyScriptSearchTests.java

public void handle(TraceLogMessage message) throws Exception {
TraceLogDocument emptyTraceLog = new TraceLogDocument();
emptyTraceLog.date = message.date;
emptyTraceLog.id = message.id;
emptyTraceLog.app = message.app;
emptyTraceLog.action = message.action;
emptyTraceLog.result = message.result;
emptyTraceLog.content = Lists.newArrayList();

StringBuilder script = new StringBuilder("ctx._source.content+=line");
if ("ERROR".equals(message.result))
script.append("; ctx._source.result=\"ERROR\"");    // if log doc is created by WARN, ERROR should update result

Map<String, String> params = Maps.newHashMap("line", message.content);

UpdateRequest request = new UpdateRequest()
.script(new Script(script.toString(), ScriptService.ScriptType.INLINE, null, params))
.upsert(JSON.toJSON(emptyTraceLog));
request.scriptedUpsert(true);

traceType.update(message.id, request);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: