不需要打分

  1. // 根据索引创建查询请求
  2. SearchRequest searchRequest = new SearchRequest("person");
  3. SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
  4. // 构建查询语句
  5. searchSourceBuilder.query(QueryBuilders.termQuery("name.keyword", "张无忌"));
  6. System.out.println("searchSourceBuilder=====================" + searchSourceBuilder);
  7. searchRequest.source(searchSourceBuilder);
  8. SearchResponse response = client.search(searchRequest, RequestOptions.DEFAULT);
  9. System.out.println(JSONObject.toJSON(response));

仔细观察查询结果,会发现ES查询结果中会带有_score这一项,ES会根据结果匹配程度进行评分。打分是会耗费性能的,如果确认自己的查询不需要评分,就设置查询语句关闭评分:

  1. SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
  2. // 这样构造的查询条件,将不进行score计算,从而提高查询效率
  3. searchSourceBuilder.query(QueryBuilders.constantScoreQuery(QueryBuilders.termQuery("sect.keyword", "明教")));