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 查询,大小写无关紧要,两者都会按您的预期工作。