Java(ElasticSearch) - 由于许多字段而构建查询

时间:2018-01-22 14:28:57

标签: java elasticsearch

我使用Java和Java高级REST客户端。 我需要构建将查找文档的查询。此查询应包含许多用于搜索的字段。 例如,我有这样的json:

{
  "timeStamp": "Fri, 29 Dec 2017 15:32:22 +0000",
  "value": 314,
  "operation": "http://software-testing.ru/library/testing/testing-tools/2638-postman",
  "type": "duration",
  "system": "front-admin"
}

我需要根据所有字段查找所有文档。 我理解如何通过一个字段(parametr)进行constract查询,但不知道如何使用大量字段进行查询:

@PostMapping("/findMetricsByValues") @Transactional public ResponseEntity findMetricsByValues(@RequestBody ElasticSearchMetrics metrics){

    SearchRequest searchRequest = new SearchRequest();

    SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
    sourceBuilder.query(QueryBuilders.termQuery("value",  metrics.getValue()));
    searchRequest.source(sourceBuilder);
    SearchResponse searchResponse = null;
    try {
        searchResponse = client.search(searchRequest);
    } catch (IOException e) {
        e.printStackTrace();
    }
    return new ResponseEntity<>(new GenericResponse(searchResponse, CODE_200), HttpStatus.OK); }

有人可以帮忙或提示吗?

1 个答案:

答案 0 :(得分:0)

  1. 您可以使用QueryBuilders.queryStringQuery(String query)方法 在这里你可以根据may字段编写查询 以下是一个可以帮助您的链接 - &gt; https://www.elastic.co/guide/en/elasticsearch/reference/2.4/query-dsl-query-string-query.html 有许多子句,如AND,OR,用于连接多个查询。 以下是在字符串中编写查询的语法 - &gt; https://www.elastic.co/guide/en/elasticsearch/reference/2.4/query-dsl-query-string-query.html#query-string-syntax
  2. 您可以使用bool查询 - &gt; https://www.elastic.co/guide/en/elasticsearch/reference/2.4/query-dsl-bool-query.html