2016-07-20 18 views
0

私はESにこの要求を送信しています:日付フィールド上ElasticSearch用語集約

{ 
    "aggregations" : { 
    "followUpActivity.metainfo.metainfos.date1" : { 
     "terms" : { 
     "field" : "metainfos.date1", 
     "missing" : "2016-07-20T13:59:06.208Z", 
     "order" : { 
      "_count" : "desc" 
     } 
     } 
    } 
    } 
} 

これが結果です:あなたはmetainfos.date1_ldateは二つの文書、しかしバケツに通知され見ることができるように

{ 
    "took":1, 
    "timed_out":false, 
    "_shards":{ 
    "total":1, 
    "successful":1, 
    "failed":0 
    }, 
    "hits":{ 
    "total":5, 
    "max_score":1.0, 
    "hits":[ 
     { 
     "_index":"living_v1", 
     "_type":"fuas", 
     "_id":"4a4137ec-48fe-11e6-9f47-30b5c2122322", 
     "_score":1.0, 
     "_routing":"living_team", 
     "_source":{ 
      "user":"living_team", 
      "timestamp":"2016-07-13T15:04:15.548Z", 
      "metainfos":{ 
      "string1":[ 
       "s1", 
       "s2" 
      ] 
      } 
     } 
     }, 
     { 
     "_index":"living_v1", 
     "_type":"fuas", 
     "_id":"4d526f8d-48fe-11e6-9f47-30b5c2122322", 
     "_score":1.0, 
     "_routing":"living_team", 
     "_source":{ 
      "user":"living_team", 
      "timestamp":"2016-07-13T15:37:24.471Z", 
      "metainfos":{ 
      "string1":[ 
       "s1", 
       "s2" 
      ] 
      } 
     } 
     }, 
     { 
     "_index":"living_v1", 
     "_type":"fuas", 
     "_id":"89fc1180-48fe-11e6-9f47-30b5c2122322", 
     "_score":1.0, 
     "_routing":"living_team", 
     "_source":{ 
      "user":"living_team", 
      "timestamp":"2016-07-13T13:43:18.566Z", 
      "metainfos":{ 
      "string1":[ 
       "s3" 
      ] 
      } 
     } 
     }, 
     { 
     "_index":"living_v1", 
     "_type":"fuas", 
     "_id":"7168393b-4daf-11e6-83ba-30b5c2122322", 
     "_score":1.0, 
     "_routing":"living_team", 
     "_source":{ 
      "user":"living_team", 
      "timestamp":"2016-07-19T14:04:14.175Z", 
      "metainfos":{ 
      "date1_ldate":[ 
       "2016-07-19T12:59:55.442Z" <<<<<<<<<<<<<<<<<<<<<< 
      ] 
      } 
     } 
     }, 
     { 
     "_index":"living_v1", 
     "_type":"fuas", 
     "_id":"7af3f44f-48fe-11e6-9f47-30b5c2122322", 
     "_score":1.0, 
     "_routing":"living_team", 
     "_source":{ 
      "user":"living_team", 
      "timestamp":"2016-07-13T14:18:49.328Z", 
      "metainfos":{ 
      "string1":[ 
       "s2" 
      ], 
      "num1":[ 
       12.0, 
       13.0 
      ], 
      "date1_ldate":[ 
       "2016-07-19T13:04:55.467Z", <<<<<<<<<<<<<<<<< 
       "2016-07-20T12:44:32.116Z"  <<<<<<<<<<<<<<<<< 
      ] 
      } 
     } 
     } 
    ] 
    }, 
    "aggregations":{ 
    "followUpActivity.metainfo.metainfos.date1":{ 
     "doc_count_error_upper_bound":0, 
     "sum_other_doc_count":0, 
     "buckets":[ 

     ] 
    } 
    } 
} 

結果は空です。

私は間違っていますか?

答えて

0

フィールド名がdate1_ldateないdate1です。だから、"terms" : { "field" : "metainfos.date1_ldate"が必要です。

+0

申し訳ありません!ご想像のとおり、Java APIを使用してこのリクエストを作成しています。私のスペルミスを変更した後、私はESのJava APIの代わりにDateTerms' 'のいくつかの種類の' LongTerms'を返し実現しました。私の日付を取得するために、この「LongTerms」集約をどのように扱うべきか知っていますか? – Jordi

+0

フム...は、内部的に保存し、長い数値を意味するタイムスタンプなどの日付をES。 [LongTerms'のソースコード](https://github.com/elastic/elasticsearch/blob/master/core/src/main/java/org/elasticsearch/search/aggregations/bucket/terms/LongTerms)を見ると、 .java#L33)私はあなたがそれを見るように、日付フィールドのためにそれを使うことを意図していたのを見ています。これは期待される動作です。私は 'java.util.Date'に' 'long'を受け取れるコンストラクタの一つ(https://docs.oracle.com/javase/7/docs/api/java/sql/Date)を使ってキャストすることをお勧めします。 html#Date(long))。 –

+0

私は参照してください。うーん、長バケット値のソースが日付か長いかどうかを確認する方法はありますか? – Jordi

関連する問題