地图搜索实现:

①参数:

  左下角经纬度和右上角经纬度

  图层数(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搜索】的更多相关文章

  1. ES搜索结果调优

    访问我的博客 自从使用 ElasticSearch 重构了主站的搜索项目之后,之后又陆续接入了其他两个项目,目前使用 SpringBoot 方式跑了一个伪集群,主站使用的时候,比较稳定,没有人反馈说有 ...

  2. 从零搭建 ES 搜索服务(五)搜索结果高亮

    一.前言 在实际使用中搜索结果中的关键词前端通常会以特殊形式展示,比如标记为红色使人一目了然.我们可以通过 ES 提供的高亮功能实现此效果. 二.代码实现 前文查询是通过一个继承 Elasticsea ...

  3. 从零搭建 ES 搜索服务(六)相关性排序优化

    一.前言 上篇介绍了搜索结果高亮的实现方法,本篇主要介绍搜索结果相关性排序优化. 二.相关概念 2.1 排序 默认情况下,返回结果是按照「相关性」进行排序的--最相关的文档排在最前. 2.1.1 相关 ...

  4. 从零搭建 ES 搜索服务(二)基础搜索

    一.前言 上篇介绍了 ES 的基本概念及环境搭建,本篇将结合实际需求介绍整个实现过程及核心代码. 二.安装 ES ik 分析器插件 2.1 ik 分析器简介 GitHub 地址:https://git ...

  5. 从零搭建 ES 搜索服务(三)同义词搜索

    一.前言 上篇介绍了 ES 的基础搜索,能满足我们基本的需求,然而在实际使用中还可能希望搜索「番茄」能将包含「西红柿」的结果也罗列出来,本篇将介绍如何实现同义词之间的搜索. 二.安装 ES 同义词插件 ...

  6. 从零搭建 ES 搜索服务(四)拼音搜索

    一.前言 上篇介绍了 ES 的同义词搜索,使我们的搜索更强大了,然而这还远远不够,在实际使用中还可能希望搜索「fanqie」能将包含「番茄」的结果也罗列出来,这就涉及到拼音搜索了,本篇将介绍如何具体实 ...

  7. ES搜索社区

    好问题 1.比如我要索引的条目为“33分钟侦探”,我想在用户输入“3”.“33”.“三三”.“三十三”.“三十三分钟”等的情况下都命中该条目,请问有没有什么好的方式实现? PS:使用的是ansj分词器 ...

  8. 从零搭建ES搜索服务(一)基本概念及环境搭建

    一.前言 本系列文章最终目标是为了快速搭建一个简易可用的搜索服务.方案并不一定是最优,但实现难度较低. 二.背景 近期公司在重构老系统,需求是要求知识库支持全文检索. 我们知道普通的数据库 like ...

  9. es 搜索功能简介

    DSL 语法介绍 语法 范围 /_search 集群上搜索所有的索引 /index1/_search index1 /index1,index2/_search index1和index2 /inde ...

随机推荐

  1. SQL Server ->> 高可用与灾难恢复(HADR)技术 -- AlwaysOn可用性组(理论篇)

    因为篇幅原因,AlwaysOn可用性组被拆成了两部分:理论部分和实战部分.而实战部分又被拆成了准备工作和AlwaysOn可用性组搭建. 三篇文章各自的链接: SQL Server ->> ...

  2. Rabbit MQ config文件解析

    Rabbit MQ config文件解析 tcp_listeners:用于监听AMQP连接的端口或主机名/对(不带TLS),默认端口:5672 2.numtcpacceptors :将接受TCP侦听器 ...

  3. 【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 ...

  4. IE浏览器兼容问题(下)——IE6的常见问题

    IE6常见兼容性问题 1.盒模型问题 (1)DTD问题 DTD:文档定义类型,规定了要遵循的书写规范. 如果不写DTD,高级浏览器还是可以正常加载,IE6会以怪异模式进行加载. 盒模型:正常应该是外扩 ...

  5. IntelliJ IDEA下"Cannot resolve symbol 'log'"的解决方法

    转自:https://my.oschina.net/greatqing/blog/703989 最近接手了一个Maven项目,IDE使用的是IntelliJ IDEA,导入后可以编译运行.但是输出日志 ...

  6. 【深入理解JAVA虚拟机】第4部分.程序编译与代码优化.2.运行期优化。这章提到的具体的优化技术,应该对以后做性能工作会有帮助。

    1.概述 Java程序最初是通过解释器(Interpreter)进行解释执行的,当虚拟机发现某个方法或代码块的运行特别频繁时,就会把这些代码认定为“热点代码”(Hot Spot Code). 为了提高 ...

  7. ZT 或许你一辈子都是个小人物

    或许你一辈子都是个小人物 分类: 程序人生 2013-06-04 22:39 483人阅读 评论(2) 收藏 举报 程序人生 本文摘自:http://www.nowamagic.net/library ...

  8. Ettercap结合sslstrip对ssl/https进行攻击

    Ettercap是一个非常强大的嗅探欺骗工具:在以往的ettercap的使用过程中,我们大多用来嗅探http,ftp,和一些加密比较简单的邮箱等的密码,对于新型的ssl/https等的加密协议就显得不 ...

  9. django 静态文件

    django 1.8版本以上 django 静态文件配置. 小作之前, 一直觉得django的静态文件配置非常的麻烦. 1. 要设置url(r'^static/(?P<path>.*)&a ...

  10. luogu P4275 萃香的请柬

    嘟嘟嘟 打表不难发现,序列的长度以及序列中1的个数都是斐波那契数列.因为第 i 秒1的个数由 i - 1的1和 i - 2的0变换而来,那么f[i] = f[i - 1] + f[i - 2].序列的 ...