2016-09-26 16 views
0

弾性検索は初めてです。弾性検索最新データ

私には、タイプとドキュメントのex:記事があります。各記事にはバージョンとカテゴリIDのタイムスタンプがあります。

一意のバージョンと同じカテゴリIDを持つ重複レコードがあります。

私の問題は

与えられたカテゴリID

の最新記事の一覧を取得する方法です例:商品名:Javaの、カテゴリID:1、バージョン:123345

例:商品名:javaの、カテゴリID:1、バージョン:123346

例:商品名:Javaの、カテゴリID:1、バージョン:123347

例:商品名:mysqlの、カテゴリID:1、バージョン:123345

例:商品名:mysqlの、カテゴリID:1、バージョン:123346

例:商品名:mysqlの、カテゴリID:1、バージョン:123347

答えて

0

を想定すると、 "バージョン" フィールドがありますタイムスタンプ、このクエリを試す

{ 
    "query": { 
    "bool": { 
     "filter": [ 
     { "term": { "category_id": 1 } } 
     ] 
    } 
    }, 
    "sort" : [ 
     { "version" : {"order" : "desc" } } 
    ] 
} 
0

ストレート検索クエリの代わりに、ネストされた集約があります。 Jayが提案するストレート検索は素晴らしいですが、2の代わりに6つのドキュメントをすべて返します。最新バージョンのみ。あなたの目標が最新のものだけを見ることであれば、あなたは次のことを試すことができます。

ここでは、termstop_hitsのアグリゲーションを単純に組み合わせています。この集約組み合わせは、私はちょうど私がJava APIの探しています、それを言及するのを忘れて、CATEGORY_ID 1

{ 
    "query": { 
    "bool": { 
     "filter": [{ "term": {"category_id": 1 }}] 
    } 
    }, 
    "aggs": { 
    "top-versions": { 
     "terms": { "field": "name"}, 
     "aggs": { 
     "top_match": { 
      "top_hits": { 
      "sort": [{ "version": {"order": "desc"}}], 
      "_source": { "include": ["name","_id"]}, 
      "size": 1 
      } 
     } 
     } 
    } 
    }, 
    "size": 0 
} 
+0

こんにちは感謝のためにあなたにそれぞれ固有の名前(mysqlの対のjava)の唯一の最新情報を提供します。 – Robin

+0

あなたはまだJava APIでこのクエリを実行できます。 – hubbardr