我试图使用ElasticSearch,所以我构建了一个简单的JUnit测试,但是测试耗时5秒,我觉得它很慢。不确定我是否错过任何东西?
Node node = NodeBuilder.nodeBuilder().node();
Client client = node.client();
BulkRequestBuilder brb = client.prepareBulk();
Map<String, Object> json = new HashMap<>();
Map<String, Object> nest = new HashMap<>();
nest.put("foo", "blah");
json.put("Code", "123");
json.put("nut", nest);
json.put("images", newArrayList("image1", "image2"));
brb.add(new IndexRequest("promotions", "promotion").source(json));
brb.execute().actionGet();
MatchQueryBuilder itemNumber = QueryBuilders.matchQuery("Code", "123");
SearchResponse sr = client.prepareSearch("promotions").setTypes("promotion").setQuery(itemNumber).execute().actionGet();
assertThat((List)sr.getHits().getHits()[0].getSource().get("images")).contains("image1");
assertThat((List)sr.getHits().getHits()[0].getSource().get("images")).contains("image2");
assertThat((List)sr.getHits().getHits()[0].getSource().get("images")).doesNotContain("image3");
答案 0 :(得分:0)
您可能希望切换到本地节点进行测试。这样就可以禁用zen发现,只有在同一个jvm中运行的其他节点才能加入同一个集群。此外,节点之间没有tcp传输(如果你有多个,似乎不是这种情况),因为它们在同一个jvm中。您的节点仍将打开http传输(默认情况下为9200端口),但如果您不需要,可能需要禁用它。
无论如何,不要忘记设置群集名称!当您开始测试时,您的节点正在查看是否有其他节点使用相同的群集名称运行。如果是这种情况,它将加入现有集群并开始与其他节点共享数据,从而导致奇怪的测试行为。
Node node = NodeBuilder.nodeBuilder().clusterName("my_cluster").local(true).node();