tl; dr :我需要在索引创建时调用的groovy脚本中创建/更新别名。
设置:ElasticSearch 1.7.X,eventhook plugin
情况:我获得了每日基础索引(使用弹性模板自动创建),需要以3个别名添加:AliasD
,AliasD-1
和AliasD-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大师:)