【 es搜索】】的更多相关文章

访问我的博客 自从使用 ElasticSearch 重构了主站的搜索项目之后,之后又陆续接入了其他两个项目,目前使用 SpringBoot 方式跑了一个伪集群,主站使用的时候,比较稳定,没有人反馈说有问题. 但新接入的一个站点商务反馈说,搜索不够准确,完全匹配的关键词不是排在搜索结果列表首位,跑到搜索上去看了一眼,确实完全匹配的结果分数不是最高的,导致没有排在结果首位,今天就来解决这个问题. 默认匹配查询 先看看我之前写的查询代码片段, MultiMatchQueryBuilder matchQ…
一.前言 在实际使用中搜索结果中的关键词前端通常会以特殊形式展示,比如标记为红色使人一目了然.我们可以通过 ES 提供的高亮功能实现此效果. 二.代码实现 前文查询是通过一个继承 ElasticsearchRepository 的接口实现的,但是如果要实现高亮,这种方式就满足不了了,这里我们需要通过 ElasticsearchTemplate 来完成. 2.1 注入 ElasticsearchTemplate ① ElasticsearchTemplate 类简介 public class El…
一.前言 上篇介绍了搜索结果高亮的实现方法,本篇主要介绍搜索结果相关性排序优化. 二.相关概念 2.1 排序 默认情况下,返回结果是按照「相关性」进行排序的--最相关的文档排在最前. 2.1.1 相关性排序(默认) 在 ES 中相关性评分 由一个浮点数表示,并在搜索结果中通过「 _score 」参数返回,默认是按照 _score 降序排列. 2.1.2 按照字段值排序 使用「 sort 」参数实现,可指定一个或多个字段.然而使用 sort 排序过于绝对,它会直接忽略文档本身的相关度,因此仅适合在…
一.前言 上篇介绍了 ES 的基本概念及环境搭建,本篇将结合实际需求介绍整个实现过程及核心代码. 二.安装 ES ik 分析器插件 2.1 ik 分析器简介 GitHub 地址:https://github.com/medcl/elasticsearch-analysis-ik 提供两种分词模式:「 ik_max_word 」及「 ik_smart 」 分词模式 描述 ik_max_word 会将文本做最细粒度的拆分,比如会将"中华人民共和国国歌"拆分为"中华人民共和国,中华…
一.前言 上篇介绍了 ES 的基础搜索,能满足我们基本的需求,然而在实际使用中还可能希望搜索「番茄」能将包含「西红柿」的结果也罗列出来,本篇将介绍如何实现同义词之间的搜索. 二.安装 ES 同义词插件 2.1 同义词插件简介 GitHub 地址:https://github.com/ginobefun/elasticsearch-dynamic-synonym 定时从 MySQL 中获取自定义词库,支持「扩展词」及「停用词」 2.2 安装步骤 参考 GitHub 中的项目说明 三.自定义分析器…
一.前言 上篇介绍了 ES 的同义词搜索,使我们的搜索更强大了,然而这还远远不够,在实际使用中还可能希望搜索「fanqie」能将包含「番茄」的结果也罗列出来,这就涉及到拼音搜索了,本篇将介绍如何具体实现. 二.安装 ES 拼音插件 2.1 拼音插件简介 GitHub 地址:https://github.com/medcl/elasticsearch-analysis-pinyin 2.2 安装步骤 ① 进入 ES 的 bin 目录 $ cd /usr/local/elasticsearch/bi…
好问题 1.比如我要索引的条目为“33分钟侦探”,我想在用户输入“3”.“33”.“三三”.“三十三”.“三十三分钟”等的情况下都命中该条目,请问有没有什么好的方式实现? PS:使用的是ansj分词器 https://elasticsearch.cn/question/1812 2.elasticsearch打分优化 1.比如搜索“感冒",有如下2个标题:1,"感冒感冒感冒感冒感冒感冒"2,"感冒了,要吃什么药" 如何让标题2的评分比标题1的评分高 htt…
一.前言 本系列文章最终目标是为了快速搭建一个简易可用的搜索服务.方案并不一定是最优,但实现难度较低. 二.背景 近期公司在重构老系统,需求是要求知识库支持全文检索. 我们知道普通的数据库 like 方式效果及性能都不好,所以另寻出路,确定通过 Elasticsearch (下文简称「 ES 」)搜索引擎实现. 三.技术选型 因公司之前购买了阿里云的ES服务且版本为 5.5.3 ,下文选用的技术框架均基于此版本. ① Elasticsearch 5.5.3 一个基于Lucene的搜索服务器,提供…
地图搜索实现: ①参数: 左下角经纬度和右上角经纬度 图层数(zoom) 关键字等各种数据库中的字段 排序方式 具体的坐标点+距离 ②实现 a.用es作为关系库,首先先mapping所有的字段,然后用laravel命令把数据库中的数据导入到es中 b.收集前台参数 1.在矩形中查找: $es_geo['geo_bounding_box'] = array( 'location' => array( 'top_right' => array( 'lat' => $top_right_lat…
DSL 语法介绍 语法 范围 /_search 集群上搜索所有的索引 /index1/_search index1 /index1,index2/_search index1和index2 /index*/_search 以index开头的索引 RUL 查询:使用q,指定查询字符串,查询内容是kv键值对 curl -XGET "http://127.0.0.1:9200/kibana_sample_data_ecommerce/_search?q=customer_first_name:Eddi…