ES的高级映射

1 地理坐标点数据类型
1.1 创建地理坐标点映射
PUT /lagou-company-locations
{
“mappings”:{
“properties”:{
“name”:{“type”:“text”},
“location”:{“type”:“geo_point”}
}
}
}
1.2 添加值(三种类型添加,字符串形式以半角逗号分割,如 “lat,lon”,对象形式显式命名为 lat 和 lon数组形式表示为 [lon,lat])
POST /lagou-company-locations/_doc
{

“name”:“百度”,
“location”:[73.983,40.719]
}
POST /lagou-company-locations/_doc
{
“name”:“腾讯”,
“location”:{
“lat”:40.722,
“lon”:73.989
}
}
POST /lagou-company-locations/_doc
{
“name”:“腾讯”,
“location”:“40.715,74.011”
}
1.3 四种地里坐标过滤器
geo_bounding_box: 找出落在指定矩形框中的点
geo_distance: 找出与指定位置在给定距离内的点
geo_distance_range:找出与指定点距离在给定最小距离和最大距离之间的点
geo_polygon: 找出落在多边形中的点。 这个过滤器使用代价很大 。当你觉得自己需要使用它
POST /lagou-company-locations/_search
{
“query”: {
“bool”: {
“must”: {“match_all”: {}},
“filter”: {
“geo_bounding_box”:{
“location”:{
“top_left”: {
“lat”: 40.73,
“lon”: 71.12
},
“bottom_right”: {
“lat” : 40.01,
“lon” : 74.0
}
}
}
}
}
}
}
GET /lagou-company-locations/_search
{
“query”: {
“bool”: {
“must”: {“match_all”: {}

 },
 "filter": {
   "geo_distance":{
     "distance": "400km", 
     "location":{
         "lat": 40,
         "lon": 70
       }
     }
   }
 }

}
}
2 动态映射
Elasticsearch在遇到文档中以前未遇到的字段,可以使用dynamic mapping(动态映射机制) 来确定字段的数据类型并自动把新的字段添加到类型映射。
Elastic的动态映射机制可以进行开关控制,通过设置mappings的dynamic属性,dynamic有如下设置项:
true:遇到陌生字段就执行dynamic mapping处理机制
false:遇到陌生字段就忽略
strict:遇到陌生字段就报错
PUT /usr
{
“mappings”:{
“dynamic”: “strict”,
“properties”:{
“name”: {“type”: “text”},
“address”: {“type”: “object”, “dynamic”: true}
}
}
}

POST /usr/_doc
{
“name”:“张三”,
“age”:25,//此处会报错
“address”:{ //此处会动态添加
“province”: “beijing”,
“city”: “beijing”
}
}
4 自定义动态映射
4.1 日期检测
4.1.1第一次添加文档,date被会当作日期格式
POST /lagou_persion/_doc
{
“date”:“2022-04-12”
}
再次添加的时候非日期格式会报错
POST /lagou_persion/_doc
{
“date”:“lagou”
}
4.1.2 可以设置映射关闭日期检查
PUT /lagou_persion
{
“mappings”: {
“date_detection”: false
}
}
4.1.3设置日期格式
PUT /lagou_persion
{
“mappings”: {
“dynamic_date_formats”: “MM/dd/yyyy”
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值