範囲フィールドタイプ

範囲フィールドタイプは、上限と下限の間の連続した値の範囲を表します。たとえば、範囲は 10月の任意の日付 または 0から9までの任意の整数 を表すことができます。これらは、下限に対して gt または gte を使用し、上限に対して lt または lte を使用して定義されます。クエリに使用でき、集計のサポートは限られています。サポートされている集計は、ヒストグラムカーディナリティ のみです。

サポートされている範囲タイプは次のとおりです:

integer_range 最小値が -231 で最大値が 231-1 の符号付き32ビット整数の範囲。
float_range 単精度32ビットIEEE 754浮動小数点値の範囲。
long_range 最小値が -263 で最大値が 263-1 の符号付き64ビット整数の範囲。
double_range 倍精度64ビットIEEE 754浮動小数点値の範囲。
date_range date 値の範囲。日付範囲は、format マッピングパラメータを通じてさまざまな日付形式をサポートします。使用される形式に関係なく、日付値はUnixエポックからのミリ秒を表す符号なし64ビット整数に解析されます。now 日付数学 表現を含む値はサポートされていません。
ip_range IPv4 または IPv6(または混合)アドレスをサポートするIP値の範囲。

以下は、さまざまな範囲フィールドを使用してマッピングを構成する例と、いくつかの範囲タイプをインデックスする例です。

Python

  1. resp = client.indices.create(
  2. index="range_index",
  3. settings={
  4. "number_of_shards": 2
  5. },
  6. mappings={
  7. "properties": {
  8. "expected_attendees": {
  9. "type": "integer_range"
  10. },
  11. "time_frame": {
  12. "type": "date_range",
  13. "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
  14. }
  15. }
  16. },
  17. )
  18. print(resp)
  19. resp1 = client.index(
  20. index="range_index",
  21. id="1",
  22. refresh=True,
  23. document={
  24. "expected_attendees": {
  25. "gte": 10,
  26. "lt": 20
  27. },
  28. "time_frame": {
  29. "gte": "2015-10-31 12:00:00",
  30. "lte": "2015-11-01"
  31. }
  32. },
  33. )
  34. print(resp1)

Ruby

  1. response = client.indices.create(
  2. index: 'range_index',
  3. body: {
  4. settings: {
  5. number_of_shards: 2
  6. },
  7. mappings: {
  8. properties: {
  9. expected_attendees: {
  10. type: 'integer_range'
  11. },
  12. time_frame: {
  13. type: 'date_range',
  14. format: 'yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis'
  15. }
  16. }
  17. }
  18. }
  19. )
  20. puts response
  21. response = client.index(
  22. index: 'range_index',
  23. id: 1,
  24. refresh: true,
  25. body: {
  26. expected_attendees: {
  27. gte: 10,
  28. lt: 20
  29. },
  30. time_frame: {
  31. gte: '2015-10-31 12:00:00',
  32. lte: '2015-11-01'
  33. }
  34. }
  35. )
  36. puts response

Js

  1. const response = await client.indices.create({
  2. index: "range_index",
  3. settings: {
  4. number_of_shards: 2,
  5. },
  6. mappings: {
  7. properties: {
  8. expected_attendees: {
  9. type: "integer_range",
  10. },
  11. time_frame: {
  12. type: "date_range",
  13. format: "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis",
  14. },
  15. },
  16. },
  17. });
  18. console.log(response);
  19. const response1 = await client.index({
  20. index: "range_index",
  21. id: 1,
  22. refresh: "true",
  23. document: {
  24. expected_attendees: {
  25. gte: 10,
  26. lt: 20,
  27. },
  28. time_frame: {
  29. gte: "2015-10-31 12:00:00",
  30. lte: "2015-11-01",
  31. },
  32. },
  33. });
  34. console.log(response1);

コンソール

  1. PUT range_index
  2. {
  3. "settings": {
  4. "number_of_shards": 2
  5. },
  6. "mappings": {
  7. "properties": {
  8. "expected_attendees": {
  9. "type": "integer_range"
  10. },
  11. "time_frame": {
  12. "type": "date_range",
  13. "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"<br> }<br> }<br> }<br>}<br><br>PUT range_index/_doc/1?refresh<br>{<br> "expected_attendees" : {<br> "gte" : 10,<br> "lt" : 20<br> },<br> "time_frame" : {<br> "gte" : "2015-10-31 12:00:00",<br> "lte" : "2015-11-01"<br> }<br>}<br>``````<br><br>
  14. | | |
  15. | --- | --- |
  16. | | `````date_range````` タイプは、[`````date`````](/read/elasticsearch-8-15/9dfa1da42eb162ff.md "日付フィールドタイプ") タイプによって定義された同じフィールドパラメータを受け入れます。 |
  17. | | 20人を含まない10人から20人の出席者で会議をインデックスする例。 |
  18. | | 日付タイムスタンプを使用した日付範囲の例。 |
  19. 以下は、`````integer_range````` フィールド名 "expected_attendees" に対する [タームクエリ](/read/elasticsearch-8-15/3a8fe9d13cce9d29.md) の例です。12は範囲内の値であるため、一致します。
  20. #### Python
  21. ``````python
  22. resp = client.search(
  23. index="range_index",
  24. query={
  25. "term": {
  26. "expected_attendees": {
  27. "value": 12
  28. }
  29. }
  30. },
  31. )
  32. print(resp)

Ruby

  1. response = client.search(
  2. index: 'range_index',
  3. body: {
  4. query: {
  5. term: {
  6. expected_attendees: {
  7. value: 12
  8. }
  9. }
  10. }
  11. }
  12. )
  13. puts response

Js

  1. const response = await client.search({
  2. index: "range_index",
  3. query: {
  4. term: {
  5. expected_attendees: {
  6. value: 12,
  7. },
  8. },
  9. },
  10. });
  11. console.log(response);

コンソール

  1. GET range_index/_search
  2. {
  3. "query" : {
  4. "term" : {
  5. "expected_attendees" : {
  6. "value": 12
  7. }
  8. }
  9. }
  10. }

上記のクエリによって生成された結果。

コンソール-結果

  1. {
  2. "took": 13,
  3. "timed_out": false,
  4. "_shards" : {
  5. "total": 2,
  6. "successful": 2,
  7. "skipped" : 0,
  8. "failed": 0
  9. },
  10. "hits" : {
  11. "total" : {
  12. "value": 1,
  13. "relation": "eq"
  14. },
  15. "max_score" : 1.0,
  16. "hits" : [
  17. {
  18. "_index" : "range_index",
  19. "_id" : "1",
  20. "_score" : 1.0,
  21. "_source" : {
  22. "expected_attendees" : {
  23. "gte" : 10, "lt" : 20
  24. },
  25. "time_frame" : {
  26. "gte" : "2015-10-31 12:00:00", "lte" : "2015-11-01"
  27. }
  28. }
  29. }
  30. ]
  31. }
  32. }

以下は、date_range フィールド名 “time_frame” に対する date_range クエリの例です。

Python

  1. resp = client.search(
  2. index="range_index",
  3. query={
  4. "range": {
  5. "time_frame": {
  6. "gte": "2015-10-31",
  7. "lte": "2015-11-01",
  8. "relation": "within"
  9. }
  10. }
  11. },
  12. )
  13. print(resp)

Ruby

  1. response = client.search(
  2. index: 'range_index',
  3. body: {
  4. query: {
  5. range: {
  6. time_frame: {
  7. gte: '2015-10-31',
  8. lte: '2015-11-01',
  9. relation: 'within'
  10. }
  11. }
  12. }
  13. }
  14. )
  15. puts response

Js

  1. const response = await client.search({
  2. index: "range_index",
  3. query: {
  4. range: {
  5. time_frame: {
  6. gte: "2015-10-31",
  7. lte: "2015-11-01",
  8. relation: "within",
  9. },
  10. },
  11. },
  12. });
  13. console.log(response);

コンソール

  1. GET range_index/_search
  2. {
  3. "query" : {
  4. "range" : {
  5. "time_frame" : {
  6. "gte" : "2015-10-31",
  7. "lte" : "2015-11-01",
  8. "relation" : "within"
  9. }
  10. }
  11. }
  12. }
範囲クエリは、範囲クエリ に記載されているのと同じように機能します。
範囲 フィールド に対する範囲クエリは、relation パラメータをサポートし、WITHINCONTAINSINTERSECTS(デフォルト)のいずれかになります。

このクエリは、類似の結果を生成します:

コンソール-結果

  1. {
  2. "took": 13,
  3. "timed_out": false,
  4. "_shards" : {
  5. "total": 2,
  6. "successful": 2,
  7. "skipped" : 0,
  8. "failed": 0
  9. },
  10. "hits" : {
  11. "total" : {
  12. "value": 1,
  13. "relation": "eq"
  14. },
  15. "max_score" : 1.0,
  16. "hits" : [
  17. {
  18. "_index" : "range_index",
  19. "_id" : "1",
  20. "_score" : 1.0,
  21. "_source" : {
  22. "expected_attendees" : {
  23. "gte" : 10, "lt" : 20
  24. },
  25. "time_frame" : {
  26. "gte" : "2015-10-31 12:00:00", "lte" : "2015-11-01"
  27. }
  28. }
  29. }
  30. ]
  31. }
  32. }

IP範囲

上記の範囲形式に加えて、IP範囲は CIDR 表記で提供できます:

Python

  1. resp = client.indices.put_mapping(
  2. index="range_index",
  3. properties={
  4. "ip_allowlist": {
  5. "type": "ip_range"
  6. }
  7. },
  8. )
  9. print(resp)
  10. resp1 = client.index(
  11. index="range_index",
  12. id="2",
  13. document={
  14. "ip_allowlist": "192.168.0.0/16"
  15. },
  16. )
  17. print(resp1)

Ruby

  1. response = client.indices.put_mapping(
  2. index: 'range_index',
  3. body: {
  4. properties: {
  5. ip_allowlist: {
  6. type: 'ip_range'
  7. }
  8. }
  9. }
  10. )
  11. puts response
  12. response = client.index(
  13. index: 'range_index',
  14. id: 2,
  15. body: {
  16. ip_allowlist: '192.168.0.0/16'
  17. }
  18. )
  19. puts response

Js

  1. const response = await client.indices.putMapping({
  2. index: "range_index",
  3. properties: {
  4. ip_allowlist: {
  5. type: "ip_range",
  6. },
  7. },
  8. });
  9. console.log(response);
  10. const response1 = await client.index({
  11. index: "range_index",
  12. id: 2,
  13. document: {
  14. ip_allowlist: "192.168.0.0/16",
  15. },
  16. });
  17. console.log(response1);

コンソール

  1. PUT range_index/_mapping
  2. {
  3. "properties": {
  4. "ip_allowlist": {
  5. "type": "ip_range"
  6. }
  7. }
  8. }
  9. PUT range_index/_doc/2
  10. {
  11. "ip_allowlist" : "192.168.0.0/16"
  12. }

範囲フィールドのパラメータ

範囲タイプによって受け入れられるパラメータは次のとおりです:

coerce 文字列を数値に変換し、整数の小数部分を切り捨てようとします。true(デフォルト)および false を受け入れます。
doc_values フィールドはディスクに列ストライド方式で保存されるべきですか?その後、ソート、集計、またはスクリプトに使用できますか?true(デフォルト)または false を受け入れます。
index フィールドは検索可能であるべきですか?true(デフォルト)および false を受け入れます。
store フィールド値は、_source フィールドから別々に保存および取得されるべきですか?true または false(デフォルト)を受け入れます。

合成 _source

合成 _source は、一般的にTSDBインデックス(index.modetime_series に設定されているインデックス)のみで利用可能です。他のインデックスでは、合成 _source は技術プレビュー中です。技術プレビューの機能は、将来のリリースで変更または削除される可能性があります。Elasticは問題を修正するために作業しますが、技術プレビューの機能は公式GA機能のサポートSLAの対象ではありません。

range フィールドは、デフォルト構成で 合成 _source をサポートします。合成 _source は、doc_values が無効になっている場合には使用できません。

合成ソースは常に値をソートし、range フィールドのすべての重複を削除しますが、ip_range の場合は除きます。範囲は、下限でソートされ、その後上限でソートされます。たとえば:

Python

  1. resp = client.indices.create(
  2. index="idx",
  3. mappings={
  4. "_source": {
  5. "mode": "synthetic"
  6. },
  7. "properties": {
  8. "my_range": {
  9. "type": "long_range"
  10. }
  11. }
  12. },
  13. )
  14. print(resp)
  15. resp1 = client.index(
  16. index="idx",
  17. id="1",
  18. document={
  19. "my_range": [
  20. {
  21. "gte": 200,
  22. "lte": 300
  23. },
  24. {
  25. "gte": 1,
  26. "lte": 100
  27. },
  28. {
  29. "gte": 200,
  30. "lte": 300
  31. },
  32. {
  33. "gte": 200,
  34. "lte": 500
  35. }
  36. ]
  37. },
  38. )
  39. print(resp1)

Ruby

  1. response = client.indices.create(
  2. index: 'idx',
  3. body: {
  4. mappings: {
  5. _source: {
  6. mode: 'synthetic'
  7. },
  8. properties: {
  9. my_range: {
  10. type: 'long_range'
  11. }
  12. }
  13. }
  14. }
  15. )
  16. puts response
  17. response = client.index(
  18. index: 'idx',
  19. id: 1,
  20. body: {
  21. my_range: [
  22. {
  23. gte: 200,
  24. lte: 300
  25. },
  26. {
  27. gte: 1,
  28. lte: 100
  29. },
  30. {
  31. gte: 200,
  32. lte: 300
  33. },
  34. {
  35. gte: 200,
  36. lte: 500
  37. }
  38. ]
  39. }
  40. )
  41. puts response

Js

  1. const response = await client.indices.create({
  2. index: "idx",
  3. mappings: {
  4. _source: {
  5. mode: "synthetic",
  6. },
  7. properties: {
  8. my_range: {
  9. type: "long_range",
  10. },
  11. },
  12. },
  13. });
  14. console.log(response);
  15. const response1 = await client.index({
  16. index: "idx",
  17. id: 1,
  18. document: {
  19. my_range: [
  20. {
  21. gte: 200,
  22. lte: 300,
  23. },
  24. {
  25. gte: 1,
  26. lte: 100,
  27. },
  28. {
  29. gte: 200,
  30. lte: 300,
  31. },
  32. {
  33. gte: 200,
  34. lte: 500,
  35. },
  36. ],
  37. },
  38. });
  39. console.log(response1);

コンソール

  1. PUT idx
  2. {
  3. "mappings": {
  4. "_source": { "mode": "synthetic" },
  5. "properties": {
  6. "my_range": { "type": "long_range" }
  7. }
  8. }
  9. }
  10. PUT idx/_doc/1
  11. {
  12. "my_range": [
  13. {
  14. "gte": 200,
  15. "lte": 300
  16. },
  17. {
  18. "gte": 1,
  19. "lte": 100
  20. },
  21. {
  22. "gte": 200,
  23. "lte": 300
  24. },
  25. {
  26. "gte": 200,
  27. "lte": 500
  28. }
  29. ]
  30. }

次のようになります:

コンソール-結果

  1. {
  2. "my_range": [
  3. {
  4. "gte": 1,
  5. "lte": 100
  6. },
  7. {
  8. "gte": 200,
  9. "lte": 300
  10. },
  11. {
  12. "gte": 200,
  13. "lte": 500
  14. }
  15. ]
  16. }

ip_range フィールドの値はソートされませんが、元の順序は保持されません。重複した範囲は削除されます。ip_range フィールド値がCIDRとして提供される場合、合成ソースではIPアドレスの範囲として表されます。

たとえば:

Python

  1. resp = client.indices.create(
  2. index="idx",
  3. mappings={
  4. "_source": {
  5. "mode": "synthetic"
  6. },
  7. "properties": {
  8. "my_range": {
  9. "type": "ip_range"
  10. }
  11. }
  12. },
  13. )
  14. print(resp)
  15. resp1 = client.index(
  16. index="idx",
  17. id="1",
  18. document={
  19. "my_range": [
  20. "10.0.0.0/24",
  21. {
  22. "gte": "10.0.0.0",
  23. "lte": "10.0.0.255"
  24. }
  25. ]
  26. },
  27. )
  28. print(resp1)

Ruby

  1. response = client.indices.create(
  2. index: 'idx',
  3. body: {
  4. mappings: {
  5. _source: {
  6. mode: 'synthetic'
  7. },
  8. properties: {
  9. my_range: {
  10. type: 'ip_range'
  11. }
  12. }
  13. }
  14. }
  15. )
  16. puts response
  17. response = client.index(
  18. index: 'idx',
  19. id: 1,
  20. body: {
  21. my_range: [
  22. '10.0.0.0/24',
  23. {
  24. gte: '10.0.0.0',
  25. lte: '10.0.0.255'
  26. }
  27. ]
  28. }
  29. )
  30. puts response

Js

  1. const response = await client.indices.create({
  2. index: "idx",
  3. mappings: {
  4. _source: {
  5. mode: "synthetic",
  6. },
  7. properties: {
  8. my_range: {
  9. type: "ip_range",
  10. },
  11. },
  12. },
  13. });
  14. console.log(response);
  15. const response1 = await client.index({
  16. index: "idx",
  17. id: 1,
  18. document: {
  19. my_range: [
  20. "10.0.0.0/24",
  21. {
  22. gte: "10.0.0.0",
  23. lte: "10.0.0.255",
  24. },
  25. ],
  26. },
  27. });
  28. console.log(response1);

コンソール

  1. PUT idx
  2. {
  3. "mappings": {
  4. "_source": { "mode": "synthetic" },
  5. "properties": {
  6. "my_range": { "type": "ip_range" }
  7. }
  8. }
  9. }
  10. PUT idx/_doc/1
  11. {
  12. "my_range": [
  13. "10.0.0.0/24",
  14. {
  15. "gte": "10.0.0.0",
  16. "lte": "10.0.0.255"
  17. }
  18. ]
  19. }

次のようになります:

コンソール-結果

  1. {
  2. "my_range": {
  3. "gte": "10.0.0.0",
  4. "lte": "10.0.0.255"
  5. }
  6. }

範囲フィールドの値は常に両側で包含的に表され、境界はそれに応じて調整されます。範囲境界のデフォルト値は null として表されます。これは、範囲境界が明示的に提供された場合でも当てはまります。たとえば:

Python

  1. resp = client.indices.create(
  2. index="idx",
  3. mappings={
  4. "_source": {
  5. "mode": "synthetic"
  6. },
  7. "properties": {
  8. "my_range": {
  9. "type": "long_range"
  10. }
  11. }
  12. },
  13. )
  14. print(resp)
  15. resp1 = client.index(
  16. index="idx",
  17. id="1",
  18. document={
  19. "my_range": {
  20. "gt": 200,
  21. "lt": 300
  22. }
  23. },
  24. )
  25. print(resp1)

Ruby

  1. response = client.indices.create(
  2. index: 'idx',
  3. body: {
  4. mappings: {
  5. _source: {
  6. mode: 'synthetic'
  7. },
  8. properties: {
  9. my_range: {
  10. type: 'long_range'
  11. }
  12. }
  13. }
  14. }
  15. )
  16. puts response
  17. response = client.index(
  18. index: 'idx',
  19. id: 1,
  20. body: {
  21. my_range: {
  22. gt: 200,
  23. lt: 300
  24. }
  25. }
  26. )
  27. puts response

Js

  1. const response = await client.indices.create({
  2. index: "idx",
  3. mappings: {
  4. _source: {
  5. mode: "synthetic",
  6. },
  7. properties: {
  8. my_range: {
  9. type: "long_range",
  10. },
  11. },
  12. },
  13. });
  14. console.log(response);
  15. const response1 = await client.index({
  16. index: "idx",
  17. id: 1,
  18. document: {
  19. my_range: {
  20. gt: 200,
  21. lt: 300,
  22. },
  23. },
  24. });
  25. console.log(response1);

コンソール

  1. PUT idx
  2. {
  3. "mappings": {
  4. "_source": { "mode": "synthetic" },
  5. "properties": {
  6. "my_range": { "type": "long_range" }
  7. }
  8. }
  9. }
  10. PUT idx/_doc/1
  11. {
  12. "my_range": {
  13. "gt": 200,
  14. "lt": 300
  15. }
  16. }

次のようになります:

コンソール-結果

  1. {
  2. "my_range": {
  3. "gte": 201,
  4. "lte": 299
  5. }
  6. }

範囲境界のデフォルト値は合成ソースで null として表されます。これは、範囲境界がデフォルト値で明示的に提供された場合でも当てはまります。たとえば:

Python

  1. resp = client.indices.create(
  2. index="idx",
  3. mappings={
  4. "_source": {
  5. "mode": "synthetic"
  6. },
  7. "properties": {
  8. "my_range": {
  9. "type": "integer_range"
  10. }
  11. }
  12. },
  13. )
  14. print(resp)
  15. resp1 = client.index(
  16. index="idx",
  17. id="1",
  18. document={
  19. "my_range": {
  20. "lte": 2147483647
  21. }
  22. },
  23. )
  24. print(resp1)

Js

  1. const response = await client.indices.create({
  2. index: "idx",
  3. mappings: {
  4. _source: {
  5. mode: "synthetic",
  6. },
  7. properties: {
  8. my_range: {
  9. type: "integer_range",
  10. },
  11. },
  12. },
  13. });
  14. console.log(response);
  15. const response1 = await client.index({
  16. index: "idx",
  17. id: 1,
  18. document: {
  19. my_range: {
  20. lte: 2147483647,
  21. },
  22. },
  23. });
  24. console.log(response1);

コンソール

  1. PUT idx
  2. {
  3. "mappings": {
  4. "_source": { "mode": "synthetic" },
  5. "properties": {
  6. "my_range": { "type": "integer_range" }
  7. }
  8. }
  9. }
  10. PUT idx/_doc/1
  11. {
  12. "my_range": {
  13. "lte": 2147483647
  14. }
  15. }

次のようになります:

コンソール-結果

  1. {
  2. "my_range": {
  3. "gte": null,
  4. "lte": null
  5. }
  6. }

date 範囲は、提供された format またはデフォルトで yyyy-MM-dd'T'HH:mm:ss.SSSZ 形式を使用してフォーマットされます。たとえば:

Python

  1. resp = client.indices.create(
  2. index="idx",
  3. mappings={
  4. "_source": {
  5. "mode": "synthetic"
  6. },
  7. "properties": {
  8. "my_range": {
  9. "type": "date_range"
  10. }
  11. }
  12. },
  13. )
  14. print(resp)
  15. resp1 = client.index(
  16. index="idx",
  17. id="1",
  18. document={
  19. "my_range": [
  20. {
  21. "gte": 1504224000000,
  22. "lte": 1504569600000
  23. },
  24. {
  25. "gte": "2017-09-01",
  26. "lte": "2017-09-10"
  27. }
  28. ]
  29. },
  30. )
  31. print(resp1)

Ruby

  1. response = client.indices.create(
  2. index: 'idx',
  3. body: {
  4. mappings: {
  5. _source: {
  6. mode: 'synthetic'
  7. },
  8. properties: {
  9. my_range: {
  10. type: 'date_range'
  11. }
  12. }
  13. }
  14. }
  15. )
  16. puts response
  17. response = client.index(
  18. index: 'idx',
  19. id: 1,
  20. body: {
  21. my_range: [
  22. {
  23. gte: 1_504_224_000_000,
  24. lte: 1_504_569_600_000
  25. },
  26. {
  27. gte: '2017-09-01',
  28. lte: '2017-09-10'
  29. }
  30. ]
  31. }
  32. )
  33. puts response

Js

  1. const response = await client.indices.create({
  2. index: "idx",
  3. mappings: {
  4. _source: {
  5. mode: "synthetic",
  6. },
  7. properties: {
  8. my_range: {
  9. type: "date_range",
  10. },
  11. },
  12. },
  13. });
  14. console.log(response);
  15. const response1 = await client.index({
  16. index: "idx",
  17. id: 1,
  18. document: {
  19. my_range: [
  20. {
  21. gte: 1504224000000,
  22. lte: 1504569600000,
  23. },
  24. {
  25. gte: "2017-09-01",
  26. lte: "2017-09-10",
  27. },
  28. ],
  29. },
  30. });
  31. console.log(response1);

コンソール

  1. PUT idx
  2. {
  3. "mappings": {
  4. "_source": { "mode": "synthetic" },
  5. "properties": {
  6. "my_range": { "type": "date_range" }
  7. }
  8. }
  9. }
  10. PUT idx/_doc/1
  11. {
  12. "my_range": [
  13. {
  14. "gte": 1504224000000,
  15. "lte": 1504569600000
  16. },
  17. {
  18. "gte": "2017-09-01",
  19. "lte": "2017-09-10"
  20. }
  21. ]
  22. }

次のようになります:

コンソール-結果

  1. {
  2. "my_range": [
  3. {
  4. "gte": "2017-09-01T00:00:00.000Z",
  5. "lte": "2017-09-05T00:00:00.000Z"
  6. },
  7. {
  8. "gte": "2017-09-01T00:00:00.000Z",
  9. "lte": "2017-09-10T00:00:00.000Z"
  10. }
  11. ]
  12. }