【 es搜索】
地图搜索实现:
①参数:
左下角经纬度和右上角经纬度
图层数(zoom)
关键字等各种数据库中的字段
排序方式
具体的坐标点+距离
②实现
a.用es作为关系库,首先先mapping所有的字段,然后用laravel命令把数据库中的数据导入到es中
b.收集前台参数
1.在矩形中查找:
$es_geo['geo_bounding_box'] = array(
'location' => array(
'top_right' => array(
'lat' => $top_right_lat,
'lon' => $top_right_lon,
),
'bottom_left' => array(
'lat' => $bottom_left_lat,
'lon' => $bottom_left_lon,
)
),
);
$params['body']['query']['bool']['filter'][] = $es_geo;
2.在圆形中查找
$es_geo['geo_distance'] = array(
'distance' => '1000m',
'location' => array(
'lat' => $lat,
'lon' => $lng
),
);
$params['body']['query']['bool']['filter'][] = $es_geo;
c.缩放时的聚合
$params['body']['aggs']['area_id'] = array(
'terms' => array(
'field' => 'area_id',
'size' => 100,
)
);
d.实例化es和查询
$db_parameters = array(
'DB_DEBUG' => FALSE,
'ES_PARAM' => array('hosts' => array($es_host)),
'ES_INDEX' => $es_index,
'ES_TYPE' => $es_type,
);
$client = ClientBuilder::create()->setHosts($db_parameters['ES_PARAM']['hosts'])->build();
$ret = $client->search($params);
e.缓存条件和结果到redis中
$md5_key = ENCODE($params);//加密参数
$redis->set($md5_key, json_encode($result), 1800);
③其他
更新es索引节点:
curl -XPUT http://localhost:9200/es_index/_mapping/es_type -d'
{
"properties": {
"xx": {
"type": "integer"
}, "xx": {
"type": "nested",
'properties' : {
'xx' : { "type": "integer" }
}
} }
}'
【 es搜索】的更多相关文章
- ES搜索结果调优
访问我的博客 自从使用 ElasticSearch 重构了主站的搜索项目之后,之后又陆续接入了其他两个项目,目前使用 SpringBoot 方式跑了一个伪集群,主站使用的时候,比较稳定,没有人反馈说有 ...
- 从零搭建 ES 搜索服务(五)搜索结果高亮
一.前言 在实际使用中搜索结果中的关键词前端通常会以特殊形式展示,比如标记为红色使人一目了然.我们可以通过 ES 提供的高亮功能实现此效果. 二.代码实现 前文查询是通过一个继承 Elasticsea ...
- 从零搭建 ES 搜索服务(六)相关性排序优化
一.前言 上篇介绍了搜索结果高亮的实现方法,本篇主要介绍搜索结果相关性排序优化. 二.相关概念 2.1 排序 默认情况下,返回结果是按照「相关性」进行排序的--最相关的文档排在最前. 2.1.1 相关 ...
- 从零搭建 ES 搜索服务(二)基础搜索
一.前言 上篇介绍了 ES 的基本概念及环境搭建,本篇将结合实际需求介绍整个实现过程及核心代码. 二.安装 ES ik 分析器插件 2.1 ik 分析器简介 GitHub 地址:https://git ...
- 从零搭建 ES 搜索服务(三)同义词搜索
一.前言 上篇介绍了 ES 的基础搜索,能满足我们基本的需求,然而在实际使用中还可能希望搜索「番茄」能将包含「西红柿」的结果也罗列出来,本篇将介绍如何实现同义词之间的搜索. 二.安装 ES 同义词插件 ...
- 从零搭建 ES 搜索服务(四)拼音搜索
一.前言 上篇介绍了 ES 的同义词搜索,使我们的搜索更强大了,然而这还远远不够,在实际使用中还可能希望搜索「fanqie」能将包含「番茄」的结果也罗列出来,这就涉及到拼音搜索了,本篇将介绍如何具体实 ...
- ES搜索社区
好问题 1.比如我要索引的条目为“33分钟侦探”,我想在用户输入“3”.“33”.“三三”.“三十三”.“三十三分钟”等的情况下都命中该条目,请问有没有什么好的方式实现? PS:使用的是ansj分词器 ...
- 从零搭建ES搜索服务(一)基本概念及环境搭建
一.前言 本系列文章最终目标是为了快速搭建一个简易可用的搜索服务.方案并不一定是最优,但实现难度较低. 二.背景 近期公司在重构老系统,需求是要求知识库支持全文检索. 我们知道普通的数据库 like ...
- es 搜索功能简介
DSL 语法介绍 语法 范围 /_search 集群上搜索所有的索引 /index1/_search index1 /index1,index2/_search index1和index2 /inde ...
随机推荐
- js 生成md5
原理比较复杂,不过人类区别与其他动物是因为会用工具,所以,把下面代码复制保存一下就好了. <script> var hex_chr = "0123456789abcdef&quo ...
- Spring-aop实现切面的四种方式 (2)
AOP实现方式一 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http ...
- python 图形界面
Python自带的库是支持Tk的Tkinter,使用Tkinter,无需安装任何包,就可以直接使用. Tk是一个图形库,支持多个操作系统 导入Tkinter包的所有内容: from tkinter i ...
- zt 设计模式六大原则(3):依赖倒置原则
下面说法对不对? 父类将算法(逻辑)封装起来,子类实现细节:这个就叫DIP(依赖倒置:Dependency Inversion Principles),模板模式就是这个原则的实现.如果在父类中加一个t ...
- Event Driven Architecture
在微服务中使用领域事件 稍微回想一下计算机硬件的工作原理我们便不难发现,整个计算机的工作过程其实就是一个对事件的处理过程.当你点击鼠标.敲击键盘或者插上U盘时,计算机便以中断的形式处理各种外部事件 ...
- note05-计算机网络
5.网络安全 被动攻击(UDP报文被截获 被 进行流量分析) 主动攻击 1.篡改(更改报文流 伪报文) 2.恶意程序(病毒.木马.蠕虫.炸弹) 3.拒绝服务Dos 密码体制 1.对称密钥密码体制(DE ...
- PhoneGap实现重力感应
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- 【[HNOI2015]菜肴制作】
\(SDSC\)讲过的题,复习一下 如果用一个小根堆来维护拓扑的话显然是会不行的,因为这样求出来的是字典序最小的拓扑序,并不一定是1尽可能在前 因为字典序是贪心的,如果前面的一位能小就尽可能的小,并不 ...
- Centos6 Ngnix和fastcgi搭建
一.下载Nginx 依赖pcre,zlib,openssl 下载解压包,解压后进入 ./configue make make install 默认安装到/usr/local/ngnix 可执行文件在/ ...
- MyBatis(10)逆向工程
什么是逆向工程? 在学习的过程中会发现,需要我们写大量的sql语句 此时mybaatis官方为我们提供逆向工程可以针对单表自动生成的mybatis执行所需要的代码 使用方法: MyBat ...