我已經從Mongo數據庫創建了彈性搜索索引。 在蒙戈的文件具有以下結構:彈性搜索範圍日期
{
"_id" : ObjectId("525facace4b0c1f5e78753ea"),
"time" : ISODate("2013-10-17T09:23:56.131Z"),
"type" : "A",
"url" : "www.google.com",
"name" : "peter",
}
該指數創建(顯然)沒有任何問題。 現在,我正嘗試使用彈性搜索來檢索兩個日期之間索引中的文檔。我已閱讀,我不得不使用範圍查詢,但我已經試過像
MatchQueryBuilder queryBuilder = QueryBuilders.matchQuery("name", "peter").type(Type.PHRASE).minimumShouldMatch("99%");
LocalDateTime toLocal = new LocalDateTime(2013,12,18, 0, 0);
Date to = toLocal.toDate();
LocalDateTime fromLocal = new LocalDateTime(2013,12,17, 0, 0);
Date from = fromLocal.toDate();
RangeQueryBuilder queryDate = QueryBuilders.rangeQuery("time").to(to).from(from);
FilterBuilder filterDate = FilterBuilders.queryFilter(queryDate);
srb = esH.client.prepareSearch("my_index");
srb.setQuery(queryBuilder);
srb.setFilter(filterDate);
sr = srb.execute().actionGet();
很多次的東西,我得到0安打,雖然應該有不少成果。我試圖輸入字符串而不是日期,但結果相同。
當我沒有過濾器,如執行基本的查詢:
MatchQueryBuilder queryBuilder = QueryBuilders.matchQuery("name", "peter").type(Type.PHRASE).minimumShouldMatch("99%");
SearchRequestBuilder srb = esH.client.prepareSearch("my_index");
rb.setQuery(queryBuilder);
SearchResponse sr = srb.execute().actionGet();
我得到的是點擊這個樣子:
{
"_index" : "my_index",
"_type" : "type",
"_id" : "5280d3c2e4b05e95aa703e34",
"_score" : 1.375688, "_source" : {"type":["A"],"time":["Mon Nov 11 13:55:30 CET 2013"],"name":["peter"]}
}
凡外地time
沒有格式ISODate("2013-10-17T09:23:56.131Z")
了。總結一下,考慮到格式,在兩個日期(和時間)之間查詢Java代碼(和類型)是什麼?
你可以添加實際JSON查詢構建器生成?如果沒有看到ES實際上看到的是什麼,真的很難說。 – drewish