Elasticsearch 搜索 Java API 没有给出正确的结果
Elasticsearch search Java API doesn't give correct results
我有以下用于 ES 搜索的代码:
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(
new HttpHost("localhost", 9200, "http")));
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
qb = QueryBuilders.termQuery("title", "Java");
searchSourceBuilder.query(qb);
searchSourceBuilder.from(0);
searchSourceBuilder.size(5);
SearchRequest searchRequest = new SearchRequest("myindex");
searchRequest.types("books");
searchRequest.source(searchSourceBuilder);
SearchResponse sr = client.search(searchRequest);
System.out.println(sr.getHits().totalHits);
它没有给我任何结果,即使有文件符合这个标准。
当我从 Kibana 运行 查询相似词时,我得到结果:
GET /myindex/books/_search
{
"query":
{
"term" : {
"title" : {
"value" : "java"
}
}
}
}
区别在于 Java 代码中的 Java
(大写)和 Kibana 查询中的 java
(小写)。
由于您正在执行 term
查询,因此大小写很重要。如果您使用 match
查询,大小写无关紧要,两者都会按您的预期工作。
我有以下用于 ES 搜索的代码:
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(
new HttpHost("localhost", 9200, "http")));
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
qb = QueryBuilders.termQuery("title", "Java");
searchSourceBuilder.query(qb);
searchSourceBuilder.from(0);
searchSourceBuilder.size(5);
SearchRequest searchRequest = new SearchRequest("myindex");
searchRequest.types("books");
searchRequest.source(searchSourceBuilder);
SearchResponse sr = client.search(searchRequest);
System.out.println(sr.getHits().totalHits);
它没有给我任何结果,即使有文件符合这个标准。 当我从 Kibana 运行 查询相似词时,我得到结果:
GET /myindex/books/_search
{
"query":
{
"term" : {
"title" : {
"value" : "java"
}
}
}
}
区别在于 Java 代码中的 Java
(大写)和 Kibana 查询中的 java
(小写)。
由于您正在执行 term
查询,因此大小写很重要。如果您使用 match
查询,大小写无关紧要,两者都会按您的预期工作。