在 Mapping 里面,将 dynamic 参数设置成 strict 可以拒绝索引包含未知字段的文档。 此条 Tips 由 medcl 贡献。

用keyword类型做时间范围查询靠谱吗?

Elasticsearch | 作者 诗兄 | 发布于2017年09月30日 | 阅读数:6154

##创建 mapping
PUT /dev_route_order_index2
{
  "mappings": {
    "dev_route_order_type": {
      "properties": {
        "create_time": {
          "type": "text",
          "fields": {
            "keyword": {
              "type": "keyword",
              "ignore_above": 256
            }
          }
        }
      }
    }
  }
}

##查询
GET /dev_route_order_index2/dev_route_order_type/_search
{
    "size": 10,
    "from": 0,
    "query": {
        "bool": {
            "must": [
                {
                    "range": {
                        "create_time.keyword": {
                            "gte": "2017-08-22 00:00:00",
                            "lt": "2017-10-28 23:59:59"
                        }
                    }
                }
            ]
        }
    } 
}
已邀请:

kennywu76 - Wood

赞同来自: laoyang360 linxiuyuan

不靠谱,虽然可以得出正确的结果,但是执行的速度远低于date类型的range查询。

hufuman

赞同来自:

不靠谱,字符串时间比较没有任何意义
 
为什么不用date类型

liang637210 - 80后搜索引擎专职男

赞同来自:

我觉得如果最求速度,建议使用时间戳的方式,这样比较、范围查询以及统计也都非常方便,唯一的不便是可视化比较差,需要将对应的时间戳转换为对应的时间格式

要回复问题请先登录注册