如何从groovy脚本创建别名

时间:2016-07-07 12:55:18

标签: elasticsearch groovy

tl; dr :我需要在索引创建时调用的groovy脚本中创建/更新别名。

设置:ElasticSearch 1.7.X,eventhook plugin

情况:我获得了每日基础索引(使用弹性模板自动创建),需要以3个别名添加:AliasDAliasD-1AliasD-2

我目前正在做的事情:

indexName = event.indicesCreated().get(0)
dateD = indexName.replace(indexPrefix, "")
date = Date.parse(indexDateFormat, dateJ)
dateD1 = date.clone().next()
dateDp1 = dateP1.format(indexDateFormat)
dateD2 = dateP1.clone().next()
dateDp2 = dateP2.format(indexDateFormat)


def esHost = "http://${esHttpHost}/_aliases"
def json = '{"actions":['+
'{"add":{"index":"'+indexName+'","alias":"'+aliasPrefix+dateDp2+'"}},'+
'{"add":{"index":"'+indexName+'","alias":"'+aliasPrefix+dateDp1+'"}},'+
'{"add":{"index":"'+indexName+'","alias":"'+aliasPrefix+dateD+'"}}]}'

URL es = new URL(esHost);
HttpURLConnection con = (HttpURLConnection) es.openConnection();
con.setRequestMethod("POST");

con.setDoOutput(true);
OutputStream os = con.getOutputStream();
os.write(json.getBytes());
os.flush();
os.close();

问题:在进行少量测试(即localhost)时,我可以轻松填充变量esHttpHost,但现实世界并不那么简单... event可以给我ES主机和端口但是它#&# 39;不是http端口(它的ES端口)。

另外我认为有一种比rest API更好的方法来操作集群,因为groovy脚本已经在ES中($ESHOME/config/scripts/myWonderfullScript.groovy

我已经接受了ES 1.7.X,但是对任何其他聪明的解决方案都持开放态度来建立索引。

提前感谢ES / groovy大师:)

0 个答案:

没有答案