弹性搜索给出了错误的结果

时间:2017-11-30 07:38:45

标签: java amazon-web-services elasticsearch kibana jest

我刚接触弹性搜索并尝试使用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

0 个答案:

没有答案
豫ICP备18024241号-1