gpt4 book ai didi

elasticsearch - Elasticsearch:从别名获取索引名称时出现AssertionError

转载 作者:行者123 更新时间:2023-12-03 01:56:38 25 4
gpt4 key购买 nike

我们在项目中一直使用 Elasticsearch插件。从别名获取索引名时出现以下错误

错误

   {
"error": "AssertionError[Expected current thread[Thread[elasticsearch[Seth][http_server_worker][T#2]{New I/O worker #20},5,main]] to not be a transport thread. Reason: [Blocking operation]]", "status": 500
}

代码
    String realIndex = client.admin().cluster().prepareState()
.execute().actionGet().getState().getMetaData()
.aliases().get(aliasName).iterator()
.next().key;

是什么原因导致这个问题?用谷歌搜索没有任何帮助

最佳答案

从错误的外观来看,似乎不允许在传输线程上执行此操作,因为它将阻塞线程,直到您返回结果。您需要在执行线程上执行此操作。

public String getIndexName() {
final IndexNameHolder result = new IndexNameHolder(); // holds the index Name. Needed a final instance here, hence created a holder.
getTransportClient().admin().cluster().prepareState().execute(new ActionListener<ClusterStateResponse>() {

@Override
public void onResponse(ClusterStateResponse response) {
result.indexName = response.getState().getMetaData().aliases().get("alias").iterator().next().key;

}
@Override
public void onFailure(Throwable e) {
//Handle failures
}
});
return result.value;
}
execute()还有另一种方法,它需要一个侦听器。您需要实现自己的侦听器。在我的回答中,我有一个Listener的匿名实现。

希望对您有所帮助

关于elasticsearch - Elasticsearch:从别名获取索引名称时出现AssertionError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36127575/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com