Tôi tạo tùy chỉnh Plugin Elasticsearch. Bây giờ tôi muốn viết một bài kiểm tra cho plugin này. sự mong đợi của tôi đã được - rằng tôi có thể chạy nhúng Elasticsearch dụ, thiết lập nó đúng cách và sau đó làm một số xét nghiệm (index một số tài liệu, sau đó truy vấn cho nó)Làm cách nào để viết bài kiểm tra cho plugin tùy chỉnh Elasticsearch?
Vấn đề là tôi không thể thiết lập Plugin của tôi đúng
đang Tuỳ chỉnh plugin được phân tích cú pháp JSON truy vấn và thiết lập một số đối tượng để sử dụng sau: mã
public class CustomQueryParserPlugin extends AbstractPlugin {
public static final String PLUGIN_NAME = "custom_query";
private final Settings settings;
@Inject
public CustomQueryParserPlugin (Settings settings) {
this.settings = settings;
}
@Override
public String name() {
return PLUGIN_NAME;
}
@Override
public String description() {
return "custom plugin";
}
public void onModule(IndicesQueriesModule module) {
module.addQuery(new CustomQueryParser(settings));
}
}
Test:
public class CustomParserPluginTest extends ElasticsearchSingleNodeTest {
private static Node newNode() {
final Settings settings = ImmutableSettings.builder()
.put(ClusterName.SETTING, nodeName())
.put("node.name", nodeName())
.put(IndexMetaData.SETTING_NUMBER_OF_SHARDS, 1)
.put(IndexMetaData.SETTING_NUMBER_OF_REPLICAS, 0)
.put(EsExecutors.PROCESSORS, 1) // limit the number of threads created
.put("http.enabled", false)
.put("plugin.types", CustomParserPlugin.class.getName())
.put("path.plugins", pathToPlugin)
.put("index.store.type", "ram")
.put("config.ignore_system_properties", true) // make sure we get what we set :)
.put("gateway.type", "none").build();
Node build = NodeBuilder.nodeBuilder().local(true).data(true).settings(
settings).build();
build.start();
assertThat(DiscoveryNode.localNode(build.settings()), is(true));
return build;
}
@Test
public void jsonParsing() throws URISyntaxException {
final Client client = newNode().client();
final SearchResponse test = client.prepareSearch("test-index").setSource(addQuery()).execute().actionGet();
}
private String addQuery() {
return "{"match_all":{"boost":1.2}}"
}
.210
Tôi đã thử nhiều giá trị cho pathToPlugin - nhưng không có vẻ như hoạt động tốt, vì JSON truy vấn luôn cho tôi một ngoại lệ:
QueryParsingException[[test-index] No query registered for [custom_query]];
Tất cả các tài liệu tôi có thể tìm được về cài đặt plugin và thử nghiệm chúng trên một số cài đặt Elasticsearch địa phương.
Tôi đang làm gì sai ở đây? Có tài liệu hoặc ví dụ về các bài kiểm tra như thế không?
UPD. Dưới đây là một repo với mã được trích xuất của CustomQueryParserPlugin - https://github.com/MysterionRise/es-custom-parser
Có thể trong phần khởi tạo trong thử nghiệm tôi cần tạo trong chỉ mục bộ nhớ?
Bạn có thể chia sẻ toàn bộ tệp với lớp 'CustomQueryParserPlugin' và cây thư mục cho plugin này không? – Rob
@Rob, cảm ơn sự quan tâm của bạn, tôi đã tạo một repo với tất cả các mã được trích xuất cho ví dụ này. Tôi sẽ cập nhật câu hỏi ngay lập tức – Mysterion