1

私が最初に検索しているときに、すべてのドキュメントを並べ替えて、最初の5レコードを私に渡します。ただし、ソート方向(ASC→DESC)を変更して同じ検索クエリを実行した場合は、すべてのドキュメントを再度ソートせずに、前回の検索クエリから取得した5つのドキュメントを取得し、降順でソートし、それは私に戻ってくる。私はDESCの順番で利用可能なすべての文書を並べ替え、最初の5つの結果を取り出すことを期待していました。Elasticsearch ::並べ替えで奇妙な結果が出る

私は間違ったことをしていますか、何か考えていませんか?

マイ検索クエリは:

{ 
    "sort": { 
     "taskid": { 
      "order": "ASC" 
     } 
    }, 
    "from": 0, 
    "size": 5, 
    "query": { 
     "filtered": { 
      "query": { 
       "match_all": [] 
      } 
     } 
    } 
} 

私は、クエリの上に今100までのtaskId 1のデータを持っているが、最初の試みでのtaskId 1から5まで私にレコードをフェッチ。今度はソート方向をdescに変更したとき、taskid 96-100(100,99,98,97,96シーケンス)のドキュメントが返されるはずですが、私はtaskid 5,4,3,2でドキュメントを返しました。 1をその順序で含む。つまり、以前に返された結果だけで並べ替えが行われました。

私の文書では、taskidと_idは同じであることに注意してください。私は_idと同じになります私のマッピングで冗長フィールドを追加しました

+0

'order'は小文字にする必要があります。それはむしろ "asc"または "desc"でなければなりません:) – Richa

+0

私は問題が値の場合にあるとは思わない。 –

答えて

3

ちょうどキーの値の大文字を変更し、あなたは行こうとしています。弾性検索で

{ 
"sort": { 
    "taskid": { 
     "order": "asc" // or "desc" 
    } 
}, 
"from": 0, 
"size": 5, 
"query": { 
    "filtered": { 
     "query": { 
      "match_all": [] 
     } 
    } 
    } 
} 

・ホープ、このことができます。..

3

結果がESから抽出された後、ソートクエリに適用されます。あなたの質問に記載されているクエリごとに、最初の結果は検索条件に基づいてフィルタリングされ、ソートがフィルタリングされた結果に適用されます。

関連する問題