我使用具有以下依賴項的 Elasticsearch 7.11.2 來撰寫單元測驗
implementation 'org.codelibs.elasticsearch.module:lang-painless:7.10.2'
implementation 'org.codelibs.elasticsearch.module:analysis-common:7.10.2'
旋轉一個節點看起來像
public EmbeddedElastic() throws NodeValidationException, IOException {
tempDir = Files.createTempDirectory("elastic_search_temp").toAbsolutePath().toString();
int port = getAvailableBasePort();
Map<String, String> settings = new HashMap<>();
settings.put("path.home", tempDir);
settings.put("http.port", Integer.toString(port));
settings.put("transport.tcp.port", Integer.toString(port 1));
settings.put("transport.type", "netty4");
settings.put("http.cors.enabled", Boolean.FALSE.toString());
new PluginNode(settings).start();
client = new RestHighLevelClient(RestClient.builder(new HttpHost("localhost", port, "http")));
System.out.println("Client: " client.getClass().getName());
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
// file deletion
}
});
}
private static class PluginNode extends Node {
public PluginNode(Map<String, String> preparedSettings) {
super(InternalSettingsPreparer.prepareEnvironment(Settings.EMPTY, preparedSettings,
null, () -> "node-test"),
Lists.newArrayList(Netty4Plugin.class, ParentJoinPlugin.class, CommonAnalysisPlugin.class,
PainlessPlugin.class),
false);
System.out.println("Started local elastic with PainlessPlugin loaded.");
}
}
現在我升級到 ES 7.16.2 并且相同的代碼不能正常作業。我認為是因為lang-painlessandanalysis-common庫。他們的最新版本只有 7.10。
將 elasticsearch 客戶端升級到 7.16 和spring-data-elasticsearch4.3.0后收到的例外
Failed to instantiate [org.springframework.data.elasticsearch.core.ElasticsearchOperations]: Factory method 'elasticsearchTemplate' threw exception; nested exception is java.lang.BootstrapMethodError: java.lang.NoClassDefFoundError: org/elasticsearch/common/xcontent/ToXContentObject
在我深入修復它之前,我想知道是否有人真的讓單元測驗適用于 7.16 ES 版本?我已經看到 Elasticsearch 測驗容器是推薦的方法
編輯:
感謝 Augusto 關于在 Maven Central 中檢查類的提示,我發現這lang-painless取決于來自 elasticsearch 客戶端的某些庫,這些庫在更高版本的 ES 客戶端中不可用。所以不可能用相同的庫撰寫單元測驗。
uj5u.com熱心網友回復:
您可能缺少與此類的依賴關系。可能是在它與 ES 客戶端一起出現之前。
嘗試添加org.elasticsearch:elasticsearch-x-content:7.15.2到您的構建工具中。請注意,您也可能缺少其他依賴項。
就像提示一樣,如果您遇到 NoClassDefFoundError,查找該類的定義位置的最簡單方法之一是在maven central中搜索。搜索fc:<fully_qualified_class_name>,它將顯示該類所在的所有 jar。
uj5u.com熱心網友回復:
Elasticsearch 將 7.16 中的此類從org.elasticsearch.common.xcontent包移到org.elasticsearch.xcontent包中,這是 7.15 和 7.16 之間的重大更改。
Spring Data Elasticsearch 4.3 是針對 7.15.x 構建的,因此不適用于 Elasticsearch 7.16 庫。
您要么需要使用 Elasticsearch 7.15,要么等待針對 7.16 構建的 Spring Data Elasticsearch 4.4(下周發布的第一個里程碑)發布。
而且,是的,你應該更好地使用測驗容器。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/416989.html
標籤:
上一篇:使用GluonhqConnect.Provider.RestClient查詢ElasticSearch正文
下一篇:獲取選擇排序的時間復雜度
