生活常用业务实现

减少搜索环节的时间,可以为排序环节、广告环节!!!!预留更多时间,支持更复杂的模型和策略,最终提高转化率等收益。

ES 实现疫情地图或者外卖点餐功能  
可变成病毒地图
百度地图标点  
var point = new BMapGL.Point(116.404, 39.915);   
var marker = new BMapGL.Marker(point);        // 创建标注   
map.addOverlay(marker);                     // 将标注添加到地图中

获取ip定位 https://api.map.baidu.com/location/ip?ip=111.206.214.37&coor=bd09ll&ak=您的AK

geo_point表示一个点 geo_shape多个点组合
"query": {
	 //bool:must:term: name:"烤鸭“
    "geo_distance":{
      "distance": "5km",             // 距离范围(半径)为5km
      "location":{                   //中心点经纬度
        "lat": "18.231472",
        "lon": "109.502083"
      }
    }
  }
  
SearchRequest request = new SearchRequest(tableName);
BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
boolQuery.filter(QueryBuilders.geoDistanceQuery("location")                //指定索引字段
.distance(inputDTO.getDistance())                                          //距离中心点范围(半径)
.point(18.231472,109.502083));                                             //中心点
request.source().query(boolQuery).size(10000).trackTotalHits(true);
SearchResponse response = restHighLevelClient.search(request, RequestOptions.DEFAULT);

矩形内数据
"filter":{
	"geo_bounding_box":{
		"location":{
			"top_left":{
				"lat":"38.532499",
				"lon":"106.193769"
			},
			"bottom_right":{
				"lat":"28.671728",
				"lon":"115.907542"
			}
		}
	}
}


mysql大数据如何优化 提高检索效率
硬件配置 
能通过硬件升级来解决的事情,千万别碰代码
对磁盘进行扩容、将机械硬盘换为SSD,或是把CPU的核数往上提升一些,增强数据库的计算能力,或是把内存扩容了,让Buffer Pool能吃进更多数据
参数配置
内存中保存一定的数据,通过 LRU  缓冲池innodb_buffer_pool_size = 750M(60%~80%MySQL专用的服务器) 数据预热
增大 redo log,减少落盘次数  不需要使用的话就可以关掉通用查询和慢查询日志也是要落盘
连接wait_timeout默认的8小时减到半小时 read_buffer_size sort_buffer_size
max_user_connection 最大连接数,默认为0无上限,最好设一个合理上限 thread_concurrency并发线程数,设为CPU核数的两倍
表结构设计 
聚合表(实时性不高/统计分析) 创建冗余字段还需要注意数据一致性问题!!!! 字段合理性unsigned负数/整数代替字符串类型 
尽量使用TIMESTAMP而非DATETIME(4字节和8字节)  varchar存在内存碎片
分表:垂直拆分和水平拆分两种 
垂直拆分:一个表有100多个字段,那么可以把表中经常不被使用的字段拆出去 
水平拆分:涉及到分布式了 sharing-jdbc 统计查询操作等问题
SQL语句(业务优化) 减少回表查询,减少字段查询  能尽量使用合理的索引  尽量多的筛选条件-减少返回数据基
索引
尽可能使用not null定义字段  不检测该条数据
尽量使用到索引 合理的索引(只会用一个索引)
值分布稀少的字段不适合建索引,例如'性别'



社交网络的推荐 单向/双向 无向图
朋友矩阵  int[][] test = new int[x][y];
朋友可能关系渲染test数组 每次+1 score分越大 认识的可能性越大
获取某人的推荐 test[x]取整行排序!!!

)

你可能感兴趣的:(生活,es)