我刚接触弹性搜索并尝试使用java从中获取日志,我发现它有时会给我错误的结果。下面是一段代码:
String connectionUrl = "https://elasticsrchurl.eu-west-1.es.amazonaws.com";
JestClientFactory factory = new JestClientFactory();
factory.setHttpClientConfig(new HttpClientConfig
.Builder(connectionUrl)
.multiThreaded(true)
.build());
JestHttpClient client = (JestHttpClient)factory.getObject();
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(QueryBuilders.matchQuery("Name",
"John"));
searchSourceBuilder.size(1);
Search search = (Search) new Search.Builder( searchSourceBuilder.toString())
.addIndex("index name")
.build();
try {
JestResult result = client.execute(search);
}catch (Exception e){}
我是否需要使用matchQuery以外的其他东西?这是正确的搜索方式,还是应该使用查询字符串?
我们使用弹性搜索来存储日志,并且每天都会创建数千个日志,但所有日志都具有唯一ID。我在这个唯一身份的基础上进行搜索,但有时会得到错误的结果。
我设法通过更改索引并在我的代码中添加等待2分钟来获得正确的结果,但它仍然会返回一些含有正确结果的模糊结果。有什么办法可以将搜索结果限制为完全匹配吗?
此致 Sunil Ojha