Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 搜索未返回预期结果_Java_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch - Fatal编程技术网 elasticsearch,Java,elasticsearch" /> elasticsearch,Java,elasticsearch" />

Java 搜索未返回预期结果

Java 搜索未返回预期结果,java,elasticsearch,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.le

我正在尝试连接到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的一些配置?

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

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

参考资料:

如果您只需要计算文档的数量,而不需要对任何字段进行分组,您只需使用所需的过滤器运行查询即可?我不明白你为什么需要聚合。日期范围也可以在查询本身中指定,除非您希望计数按特定的日期间隔分组哦!好的,我是这个API的新手,你能提供一个示例吗?或者你能给我指一些参考例子,如你所说的查询本身吗?问题是新旧APIscheck中存在很多混淆:您需要构建一个查询,其中在
log\u级别
上使用术语过滤器,在日期字段上使用范围过滤器。将结果的大小设置为0,因为您只需要计数。我认为这也优化了查询。更改了我现在使用的代码,并在代码中进行了更新,我看到0个点击,理想情况下我应该得到1您也需要发布索引映射
curl-XGET localhost:9200/index_name/_mappings?pretty=true
从DSL开始,您所放置的并不是我想要的。重要的是,生成的DSL工作得非常好,但我的代码返回0次点击。我肯定我错过了什么。我完全不知道我是否应该为搜索创建一个saperate索引,我想你需要更新你的问题。你想要实现什么?根据我在您更改问题之前收集到的信息,您希望找到在某个日期范围内具有loglevel:error的文档数。如果我错了,请告诉我这是正确的,但请同时查看标题,因为我无法获取我应该获取的正确数量的记录。任何要求我都得零分。由于
TransportClient
将被弃用,我计划使用rest客户端。它是正确的,我查询的方式是错误的,我已经修复了,但是输出没有改变。你能粘贴你得到的响应和elasticsearch中应该符合你的条件的文档吗?我已经在聊天室中添加了完整的信息。。。谢谢