Range

原文链接:

https://www.elastic.co/guide/en/elasticsearch/reference/5.4/range.html

译文链接:

http://www.apache.wiki/pages/editpage.action?pageId=10031152

贡献者:

张学ApacheCNApache中文网

支持以下范围类型:

| integer_range | 32位有符号整型数范围。最小值是-231,最大值是231-1。 | | float_range | 单精度32位IEEE 754浮点值范围。 | | long_range | 64位有符号整型数范围。最小值是-263,最大值是263-1。 | | double_range | 双精度64位IEEE 754浮点值范围。 | | date_range | 以系统纪元经过的无符号64位整数毫秒表示的日期值范围。 |

以下是使用各种范围字段配置映射的示例,后跟跟踪多个范围类型的示例。

  1. PUT range_index
  2. {
  3. "mappings": {
  4. "my_type": {
  5. "properties": {
  6. "expected_attendees": {
  7. "type": "integer_range"
  8. },
  9. "time_frame": {
  10. "type": "date_range", #1
  11. "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
  12. }
  13. }
  14. }
  15. }
  16. }
  17. PUT range_index/my_type/1
  18. {
  19. "expected_attendees" : { #2
  20. "gte" : 10,
  21. "lte" : 20
  22. },
  23. "time_frame" : { #3
  24. "gte" : "2015-10-31 12:00:00", #4
  25. "lte" : "2015-11-01"
  26. }
  27. }

以下是date_range查询的一个例子,该日期字段名为“time_frame”。

  1. POST range_index/_search
  2. {
  3. "query" : {
  4. "range" : {
  5. "time_frame" : { #5
  6. "gte" : "2015-10-31",
  7. "lte" : "2015-11-01",
  8. "relation" : "within" #6
  9. }
  10. }
  11. }
  12. }

上述查询产生的结果。

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

| 1 | date_range类型接受由日期类型定义的相同字段参数。 | | 2 | 举办与10至20名与会者的会议举例。 | | 3 | 日期范围接受与date range queries(日期范围查询)中所述相同的格式。 | | 4 | 示例日期范围使用日期时间戳。 这也接受日期数学格式,或者系统时间的“now”。 | | 5 | Range queries(范围查询)与range query(范围查询)中所述相同。 | | 6 | 范围查询范围字段支持一个关系参数,可以是WITHINCONTAINSINTERSECTS(默认)之一。 |

range字段的参数

range字段接受一下参数:

| coerce | 尝试将字符串转换为数字并截断整数的分数。 接受true(默认)和false。 | | boost | 映射字段级查询时间提升。 接受一个浮点数,默认为1.0。 | | include_in_all | 字段值是否应包含在_all字段中? 接受true或者false。 如果index设置为false,或者如果父对象字段将include_in_all设置为false,则默认为false。 否则默认为true。 | | index | 应该可以搜索该字段吗? 接受true(默认)和false。 | | store | 字段值是否应与_source字段分开存储和检索。 接受truefalse(默认)。 |