Elasticsearchに保存するデータは、日次でつくったIndexに保存している
このような運用はElasticsearchのデータ保存法として一般的
上記サイトより
日次でインデックスを分割するのはElasticが推奨する方法です。性能のコントロールが容易になり、また古いログを削除する場合、インデックス自体を削除すればよいため、クリーニングの運用が容易になります。
そして、例えばこのようなindexがあり、
my-index-20200601 my-index-20200602 my-index-20200603
これらをまとめて取得する場合は、以下のようにアスタリスクでまとめることができる
GET my-index-*/item/_search { "query": { "match_all": {} } }
まとめるときのソート順
indexの日付順にしたくて試しにsort
に_index
を指定してみたらindexの日付順にすることができた
GET my-index-*/item/_search { "query": { "match_all": {} }, "sort": [ { "_index": { "order": "dec" } } ] }
しかし、boostを使ってスコアを調整している場合はソートが使えなかった(_score
がnullになってしまう)
boost は条件にマッチした場合にscoreを加算する機能
この場合は、function_score
を使わず、scripted fieldsを使って調整したスコアのフィールドを作るのがよさそう