【 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 ...
随机推荐
- SQL Server ->> 高可用与灾难恢复(HADR)技术 -- AlwaysOn可用性组(理论篇)
因为篇幅原因,AlwaysOn可用性组被拆成了两部分:理论部分和实战部分.而实战部分又被拆成了准备工作和AlwaysOn可用性组搭建. 三篇文章各自的链接: SQL Server ->> ...
- Rabbit MQ config文件解析
Rabbit MQ config文件解析 tcp_listeners:用于监听AMQP连接的端口或主机名/对(不带TLS),默认端口:5672 2.numtcpacceptors :将接受TCP侦听器 ...
- 【Leetcode】【Medium】Path Sum II
Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given su ...
- IE浏览器兼容问题(下)——IE6的常见问题
IE6常见兼容性问题 1.盒模型问题 (1)DTD问题 DTD:文档定义类型,规定了要遵循的书写规范. 如果不写DTD,高级浏览器还是可以正常加载,IE6会以怪异模式进行加载. 盒模型:正常应该是外扩 ...
- IntelliJ IDEA下"Cannot resolve symbol 'log'"的解决方法
转自:https://my.oschina.net/greatqing/blog/703989 最近接手了一个Maven项目,IDE使用的是IntelliJ IDEA,导入后可以编译运行.但是输出日志 ...
- 【深入理解JAVA虚拟机】第4部分.程序编译与代码优化.2.运行期优化。这章提到的具体的优化技术,应该对以后做性能工作会有帮助。
1.概述 Java程序最初是通过解释器(Interpreter)进行解释执行的,当虚拟机发现某个方法或代码块的运行特别频繁时,就会把这些代码认定为“热点代码”(Hot Spot Code). 为了提高 ...
- ZT 或许你一辈子都是个小人物
或许你一辈子都是个小人物 分类: 程序人生 2013-06-04 22:39 483人阅读 评论(2) 收藏 举报 程序人生 本文摘自:http://www.nowamagic.net/library ...
- Ettercap结合sslstrip对ssl/https进行攻击
Ettercap是一个非常强大的嗅探欺骗工具:在以往的ettercap的使用过程中,我们大多用来嗅探http,ftp,和一些加密比较简单的邮箱等的密码,对于新型的ssl/https等的加密协议就显得不 ...
- django 静态文件
django 1.8版本以上 django 静态文件配置. 小作之前, 一直觉得django的静态文件配置非常的麻烦. 1. 要设置url(r'^static/(?P<path>.*)&a ...
- luogu P4275 萃香的请柬
嘟嘟嘟 打表不难发现,序列的长度以及序列中1的个数都是斐波那契数列.因为第 i 秒1的个数由 i - 1的1和 i - 2的0变换而来,那么f[i] = f[i - 1] + f[i - 2].序列的 ...