数値や日時など、範囲を指定できるデータをフィールドに格納している場合、そのフィールドに対して範囲指定検索が可能です。
利用方法
範囲指定検索をするためには、「フィールド名:[値 TO 値]」を検索フォームに入力します。範囲の区切りには半角大文字の TO を使用します。
たとえば、content_length フィールドに対して、1kバイトから10kバイトの範囲にあるドキュメントを検索する場合は、以下のように検索フォームに入力します。
角括弧 [ ] は範囲の端を含み(以上・以下)、波括弧 { } は範囲の端を含みません(より大きい・より小さい)。両者は組み合わせて指定することもできます。たとえば content_length:{1000 TO 10000] は、1000より大きく10000以下のドキュメントを表します。
片側を * にすると、上限または下限のみを指定した開いた範囲を表します。content_length:[1000 TO *] は1000以上、content_length:[* TO 10000] は10000以下を表します。
範囲指定検索は、検索対象として登録されているフィールドに対してのみ有効です。デフォルトでは content_length、last_modified、timestamp、click_count、favorite_count などのフィールドを範囲指定検索できます。
時間の範囲指定検索
時間(日時)の範囲指定検索をするためには、「last_modified:[日時1 TO 日時2]」(日時1<日時2) を検索フォームに入力します。なお、日時1が日時2より後の場合でもエラーにはならず、検索結果が0件になります。
日時は ISO 8601 形式で指定します。フォーマットは YYYY-MM-DDThh:mm:ss.SSSZ で、時刻以降は省略できます。
| 指定内容 | 例 |
|---|---|
| 年月日のみ | 2012-12-02 |
| 年月日および時分秒 | 2012-12-02T10:45:23Z |
| 年月日および時分秒(ミリ秒まで) | 2012-12-02T10:45:23.235Z |
日時の指定には、現在日時を基準にした日時演算を利用できます。利用できる記号は以下のとおりです。
| 記号 | 意味 |
|---|---|
now | 現在の日時 |
y / M / w / d / h / m / s | 年 / 月 / 週 / 日 / 時 / 分 / 秒 |
+ / - | 加算 / 減算 |
/ | 丸め(/ の後ろの単位で丸める) |
now や日時を基準にした場合には、+、-(加算、減算)や /(丸め)といった記号を付けることができます。ただし、now ではなく特定の日時を基準にした場合は、日時と記号の間に || を入れる必要があります(例:2016-01-01||+1M/d)。
/ は / の後ろの単位で丸める記号です。now-1d/d は、本日何時に実行したとしても、本日00:00から-1日した前日の00:00を表します。
なお、これらの日時演算は検索エンジン(OpenSearch)側で評価され、日時型のフィールドに対してのみ有効です。
たとえば、last_modified フィールドに対して、現在日時(2016年2月21日20時とする)から30日前までに更新されたドキュメントを検索する場合は、以下のように検索フォームに入力します。
上記は、現在日時が2016年2月21日20時(UTC)の場合、おおよそ [2016-01-22T20:00:00Z TO 2016-02-21T20:00:00Z] の範囲に相当します。