
1. 问题
查询索引的mapping结构语句:
GET enriched_orders/_mapping
enriched_orders索引的order_date字段类型如下:
"order_date" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
}
GET enriched_orders/_search
{
"query": {
"range": {
"order_date": {
"gte": "2020-07-30 10:00:00",
"lte": "2020-07-31 10:38:11"
}
}
}
}
2. Es索引的mapping模式
Elasticsearch 索引映射类型及mapping属性详解
https://www.knowledgedict.com/tutorial/elasticsearch-index-mapping.html
2.1 dynamic动态宽松模式(动态映射)
index.mapping.total_fields.limit:1000# dynamic这种方式最多加到1000字段的限制,想超过1000可以修改这个参数
2.2 strict严格模式(静态映射)
3. text类型和keyword类型的区别
3.1 text类型
会分词,然后进行索引
支持模糊、精确查询
不支持聚合
分词器默认standard ,对于中文来说就是按字分词
支持fields属性,可以在fields中添加keyword子类型,以实现精确检索
3.2 keyword类型
不进行分词,直接索引
支持模糊、精确查询
支持聚合
支持按字数建立索引,以便节约索引空间
4.正确姿势
GET enriched_orders/_search
{
"query": {
"range": {
"order_date.keyword": {
"gte": "2020-07-30 10:00:00",
"lte": "2020-07-31 10:38:11"
}
}
}
}
GET enriched_orders/_search
{
"query": {
"range": {
"order_date.keyword": {
"from": "2020-07-30 10:00:00",
"to": "2020-07-31 10:38:11"
}
}
}
}
