【问题标题】:Java elasticsearch API with Elasticsearch server on WM machineWM 机器上带有 Elasticsearch 服务器的 Java elasticsearch API
【发布时间】:2016-03-23 13:18:05
【问题描述】:

我从 Kibana 4.4.1 对 Elasticsearch 进行查询,如下所示:

{
  "size": 0,
  "query": {
    "filtered": {
      "query": {
        "query_string": {
          "query": "FALK0911622560T",
          "analyze_wildcard": true
        }
      },
      "filter": {
        "bool": {
          "must": [
            {
              "range": {
                "@timestamp": {
                  "gte": 1438290000000,
                  "lte": 1440968400000,
                  "format": "epoch_millis"
                }
              }
            }
          ],
          "must_not": []
        }
      }
    }
  },
  "aggs": {
    "2": {
      "date_histogram": {
        "field": "@timestamp",
        "interval": "1w",
        "time_zone": "Europe/Helsinki",
        "min_doc_count": 1,
        "extended_bounds": {
          "min": 1438290000000,
          "max": 1440968400000
        }
      },
      "aggs": {
        "1": {
          "percentiles": {
            "field": "Quantity",
            "percents": [
              50
            ]
          }
        }
      }
    }
  }
}

这段代码将返回给定时间间隔内所有“ProductCode”= FALK0911622560T的文档。

我用 Elasticsearch Java API 尝试了同样的事情,代码如下:

        BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery().must(QueryBuilders.matchQuery(matchQueryKey,matchQueryValue));

        SearchResponse response = client.prepareSearch(indexName)
                .setTypes(indexTypeName)
                .setQuery(boolQueryBuilder)
                .setSize(100)
                .addAggregation(AggregationBuilders
                        .dateHistogram("myHistogram")
                        .field("@timestamp")
                        .interval(DateHistogramInterval.WEEK)
                        .timeZone("Europe/Helsinki")
                        .minDocCount(1)
                        .extendedBounds(1438290000000L, 1440968400000L))
                .addFields(fieldsOfInterest)
                .execute()
                .actionGet();

        response.getAggregations();

但我得到索引中的所有文档,“ProductCode”= FALK0911622560T。

在给定时间之间,我应该只有 5 个关于 response.getAgregations() 的文档,因为我将时间间隔设置为周。

Elasticsearch 中的文档如下所示:

{
  "_index": "warehouse-550",
  "_type": "core2",
  "_id": "AVOKCqQ68h4KkDGZvk6b",
  "_score": null,
  "_source": {
    "message": "5,550,67.01,FALK0911622560T,2015-07-31;08:00:00.000\r",
    "@version": "1",
    "@timestamp": "2015-07-31T06:00:00.000Z",
    "path": "D:/Programs/Logstash/x_testingLocally/processed-stocklevels-550-25200931072015.csv",
    "host": "EVO385",
    "type": "core2",
    "Quantity": 5,
    "Warehouse": "550",
    "Price": 67.01,
    "ProductCode": "FALK0911622560T",
    "Timestamp": "2015-07-31;08:00:00.000"
  },
  "fields": {
    "@timestamp": [
      1438322400000
    ]
  },
  "highlight": {
    "ProductCode": [
      "@kibana-highlighted-field@FALK0911622560T@/kibana-highlighted-field@"
    ],
    "message": [
      "5,550,67.01,@kibana-highlighted-field@FALK0911622560T@/kibana-highlighted-field@,2015-07-31;08:00:00.000\r"
    ]
  },
  "sort": [
    1438322400000
  ]
}

请帮忙。 谢谢。

【问题讨论】:

    标签: java api elasticsearch kibana


    【解决方案1】:

    您没有添加rangeQuery。将您的 boolQueryBuilder 更改为以下:

    BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery().must(QueryBuilders.matchQuery(matchQueryKey,matchQueryValue)).must(QueryBuilders.rangeQuery("@timestamp").gte(fromValue).lte(toValue));
    

    您可以使用以下方式获取存储桶:

    InternalDateHistogram histogram = searchResponse.getAggregations().getAsMap().get(aggregation_name);
    List bucketList = histogram?.getBuckets()
    

    【讨论】:

    • 您能帮我如何提取该存储桶中的文档吗?不幸的是我不能,因为我的声誉低于 15 分:(
    • 根据您的要求编辑了我的答案。您可以接受答案,因为您是此问题的所有者。阅读meta.stackexchange.com/questions/5234/…
    • 好的,再次感谢您的快速回复。我是stackoverflow的菜鸟,我的意思是这是我的第一个问题,希望你能理解我。祝你有个美好的一天!
    • 没关系。谢谢:)
    猜你喜欢
    • 2013-11-03
    • 1970-01-01
    • 1970-01-01
    • 2013-06-29
    • 1970-01-01
    • 1970-01-01
    • 2013-11-16
    • 2017-03-03
    • 2016-05-04
    相关资源
    最近更新 更多