2017-04-02 5 views
0

私はrubyアプリケーションでelasticsearchをTire gem経由で使用しています。 は、ここに私のインデックスelasticsearchで並べ替える適切な方法は何ですか?

mapping do 
    indexes :title 
    indexes :views_count, type: 'integer' 
    indexes :created_time, type: 'date' 
end 

そして、私のクエリです: -

News.tire.search load: true do 
    query {all} 
    sort { by :views_count, 'desc'} 
end 

これはかなり良いですし、それがうまく機能になります見えます。しかし、予期せぬ結果があります。数値を文字列として扱います。つまり、「33」は「4」よりも少なくなると考えられます。私はelasticsearchに文字列ではなく整数として扱うよう伝えたい。

created_timeでも同じことが起こっていますが、私はそのパターンに気づいていませんでした。私はタイプや何かを渡すべきだと思う。だから、どんな体が私を助けることができますか?

ありがとうございます。

+0

あなたのRubyスクリプトによって作成されているインデックスのマッピングを投稿してください。これは 'curl -XGET localhost:9200/index_name'によって実現できます。 –

+0

ありがとう、あなた。あなたはそれを解決しました! –

答えて

0

私が間違っていたのは、マッピングを作成する際にタイプパラメータが見つかる前に、マッピングが存在していたため、インデックスのマッピングではなくインデックスのみを更新したことでした。

関連する問題