搜索未返回预期结果

时间:2018-08-27 06:55:53

标签: java elasticsearch

我正在尝试连接elasticsearch并在6.3.2版本中进行一些基本查询。

我正在尝试的代码是这样:

RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(new HttpHost("localhost", 30100, "http")));

SearchRequest sr = new SearchRequest(INDEX);
sr.indicesOptions(IndicesOptions.lenientExpandOpen());

SearchSourceBuilder ssb = new SearchSourceBuilder();
sr.source(ssb);

MatchQueryBuilder builder = QueryBuilders.matchQuery("logLevel.keyword", "ERROR");
    QueryBuilder qb = QueryBuilders.boolQuery().must(builder);
    ssb.query(qb);

SearchResponse response = null;

try {
    response = client.search(sr);
    System.out.println("total hits ::: " + response.getHits().getTotalHits());
} catch (IOException e) {
    e.printStackTrace();
} finally {
    try {
        client.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

System.out.println(response);

更新 如建议,我现在只使用查询。我尝试从API进行构建查询,但看到了结果,但是由于某种原因response.getHits().getTotalHits()返回零。生成的查询如下所示,并在kibana中提供了预期的结果,即总数为1:

GET /_search
{
  "from": 0,
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "logLevel.keyword": {
              "query": "ERROR",
              "operator": "OR",
              "prefix_length": 0,
              "max_expansions": 50,
              "fuzzy_transpositions": true,
              "lenient": false,
              "zero_terms_query": "NONE",
              "auto_generate_synonyms_phrase_query": true,
              "boost": 1
            }
          }
        }
      ],
      "adjust_pure_negative": true,
      "boost": 1
    }
  }
}

是否缺少restclient的某些配置?

1 个答案:

答案 0 :(得分:0)

我不明白为什么您需要发布的查询中的所有部分(例如max_expansions等)。如果您只需要计数符合条件的文档,则下面的简单查询就可以完成这项工作。

curl -XGET "http://localhost:9200/index_name/_search" -d'
{
  "size": 0,
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "logLevel": "ERROR"
          }
        },
        {
          "range": {
            "date": {
              "gte": "enter_date_here"
            }
          }
        }
      ]
    }
  }
}'

参考:https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-range-query.html