2017-11-20 6 views
0

私は動物のドキュメントがたくさんあり、私はアイテムを並べ替えたい最初に、他の動物の最初の結果をもたらす必要があります。NEST Elasticsearch高度な並べ替え

私のアプローチ

var client = new Nest.ElasticClient(settings); 
client.Search<Animals>(s => s.MatchAll().Sort(y => y.Descending(d => d.Type == "cat"))); 

しかし、それは望ましい結果を与えるものではありません。このため

答えて

1

あなたが名前の種類とソースのフィールドを使用する場合はscript sorting

を使用する必要があります。あなたは、テキストフィールドの値を取得することはできませんが、あなたがソースのインデックスタイプをしたい場合は、このキーワードフィールド

var items = db.Search<Animals>(s => s. 
        Index("test"). 
        Type(""). 
        Sort(sort => sort. 
           Script(sd => sd. 
              Type("number"). 
              Script(sdd => sdd. 
                  Inline("doc['type.keyword'].value == 'cat' ? 0 : 1")). 
                  Ascending()))); 

のために動作します。注記新しいアプリではこれをES6で削除することをお勧めしません

var items2 = db.Search<Animals>(s => s. 
       Index("test"). 
       Type(""). 
       Sort(sort => sort. 
          Script(sd => sd. 
              Type("number"). 
              Script(sdd => sdd. 
                 Inline("doc['_type'].value == 'cat' ? 0 : 1")). 
                 Ascending()))); 
+0

'type.keyword'は' Animals.Type' – Toshi

関連する問題