Elasticsearch6实践

目录

目录

一、需求

二、ES索引设计

三、页面搜索条件

四、ES的分页搜索DSL语句

五、其他


一、需求

    公告列表,需要支持以下搜索

1、根据文本输入,模糊搜索公告标题和公告正文。
2、支持公告类型搜索,单选
3、支持根据公告所在省市区搜索,可多选。如,可以同时选中“浙江”,“广州”,“朝阳区”
4、支持公告包含的行业搜索,行业包括一级行业、二级行业,可多选。
5、支持公告发布的时间搜索,如最近7天,最近一个月,或选定一段日期范围。
7、支持根据公告中涉及到的金额范围搜索,如1万-10万,10万-200万,200万-500万,可选择多个范围

二、ES索引设计

{"aliases":{"announcement_index_read":{},"announcement_index_write":{}},"settings":{"index":{"sort.field":"createTime", //默认根据公告发布时间排序"sort.order":"desc"},"analysis":{"analyzer":{"ik_max_word_ignore_html":{   "type":"custom","char_filter":["html_strip"],"tokenizer":"ik_max_word"},"comma":{"type":"pattern","pattern":","}},"char_filter":{"html_char_filter":{"escaped_tags":[],"type":"html_strip"}}}},"mappings":{"_doc":{"properties":{"id":{"type":"keyword"},"districtCodes":{   //省市区信息,存储省市区的code,如浙江省、杭州市、余杭区,对应存储”100,101,111",支持根据浙江省搜索到该公告,也支持根据区搜索到该公告"type":"text","analyzer":"comma"},"annTypes":{ //公告类型,一个公告可能对应多个类型,多个类型都逗号分隔存储"type":"text","analyzer":"comma"},"announcementId":{"type":"keyword"},"title":{  //公告标题,支持根据标题模糊搜索"type":"text","analyzer":"ik_max_word","search_analyzer":"ik_smart"},"createTime":{    //公告发布时间"type":"date","format":"yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"},"amount":{   //公告涉及到的金额"type":"double"},"industryNames":{  //行业名称,包含所有一级行业和二级行业,多个行业用逗号分隔,如“安防,电子电器,数码产品”。支持根据行业名称模糊搜索,支持根据多个行业精确搜索。"type":"text","fields":{"fuzzy":{"type":"text","analyzer":"ik_max_word"},"keyword":{"type":"keyword"}},"analyzer":"comma","search_analyzer":"ik_smart"},"industryNameJson":{  //行业信息,前端页面展示需要嵌套格式的行业信息,纯展示使用,存储一级行业、二级行业嵌套的json格式,如"[{\"firstIndustryName\":\"安防\",\"secondIndustryName\":\"安防设备\"},{\"firstIndustryName\":\"行政办公\",\"secondIndustryName\":\"办公用品\"}]""type":"text"},"content":{    //公告正文内容,内容包含html标签,需要根据输入内容模糊搜索"type":"text","term_vector":"with_positions_offsets","analyzer":"ik_max_word_ignore_html","search_analyzer":"ik_smart"}}}}
}

三、页面搜索条件

搜索条件,公告类型=”招标公告“,行业=”安防和办公“,金额范围为100万到200万和20万到50万,发布日期为2021/03/03到2023/10/12,标题和正文内容匹配”信息化“

{"annType":"招标公告","industry":"安防,办公","amountRange":"100#200,20#50","districtCodes":"330000,650000","createTimeRange":"2021/03/03#2023/10/12","searchValue":"信息化","sort":"desc","curPage":1,"pageSize":10
}

四、ES的分页搜索DSL语句

    注:支持根据标题和正文内容搜索,实际是同时匹配title和content两个字段,DSL是把两个字段的查询包装在一个should中,每个字段的匹配operator默认使用or,将operator改成and后,精度变准确了。

{"size":10,"query":{"bool":{"filter":[{"terms":{"annTypes":["招标公告"],"boost":1}},{"terms":{"districtCodes":["330000","650000"],"boost":1}},{"range":{"createTime":{"include_lower":true,"include_upper":false,"from":1614700800000,"boost":1,"to":1697126399000}}},{"bool":{"adjust_pure_negative":true,"should":[{"range":{"amount":{"include_lower":true,"include_upper":true,"from":100000000,"boost":1,"to":200000000}}},{"range":{"amount":{"include_lower":true,"include_upper":true,"from":20000000,"boost":1,"to":50000000}}}],"minimum_should_match":"1","boost":1}},{"bool":{"adjust_pure_negative":true,"should":[{"match":{"industryNames.fuzzy":{"auto_generate_synonyms_phrase_query":true,"query":"信息化","zero_terms_query":"NONE","fuzzy_transpositions":true,"boost":1,"prefix_length":0,"operator":"AND","lenient":false,"max_expansions":50}}},{"match":{"content":{"auto_generate_synonyms_phrase_query":true,"query":"信息化","zero_terms_query":"NONE","fuzzy_transpositions":true,"boost":1,"prefix_length":0,"operator":"AND","lenient":false,"max_expansions":50}}},{"match":{"title":{"auto_generate_synonyms_phrase_query":true,"query":"信息化","zero_terms_query":"NONE","fuzzy_transpositions":true,"boost":1,"prefix_length":0,"operator":"AND","lenient":false,"max_expansions":50}}}],"boost":1}}],"adjust_pure_negative":true,"must":[{"terms":{"industryNames":["安防","办公"],"boost":1}}],"boost":1}},"from":0,"_source":{"exclude":["content"]},"sort":[{"releasedTime":{"order":"desc"}}],"timeout":"20s"
}

五、其他

     ES分页搜索,返回条数有限制,最大不能超过1万条,查询总行数会返回正确行数,但超过1万条后返回的数据为空,故,需要在产品设计的时候对前端分页做一下限制,如一页10条数据,最大只展示1000页。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/104426.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于SSM的班级事务管理系统

基于SSM的班级事务管理系统 开发语言:Java数据库:MySQL技术:SpringSpringMVCMyBatisVue工具:IDEA/Ecilpse、Navicat、Maven 系统展示 前台界面 登录界面 班委界面 学生界面 管理员界面 摘要 基于SSM(Spring、Spring…

ARM-day9作业

main.c: #include "uart.h"#include "key_it.h"int main(){char c;char *s;uart4_init(); //串口初始化//中断初始化key_it_config();key3_it_config();//完成GPIO相关初始化all_led_init();//风扇初始化fs_init();//蜂鸣器初始化fmq_init();while(1){…

矿区井下智慧用电安全监测解决方案

一、背景 矿区井下作业具有复杂的环境和较高的危险性,对于用电安全的要求尤为严格。传统的管理模式和监测方法往往无法实时、准确地掌握井下用电情况,对安全隐患的排查与预防存在一定局限性。因此,引入智慧用电安全监测解决方案&#xff…

黑马JVM总结(三十二)

(1)类加载器-线程上下文1 使用的应用程序类加载器来完成类的加载,不是用的启动类加载器,jdk在某些情况下要打破,双亲委派的模式,有时候需要调用应用程序类加载器来完成类的加载,否则有些类它是找…

YB4058是一款经济高效、完全集成的高输入电压单电池锂离子电池充电器

高输入电压充电器支持I2C和OVP保护 概述: YB4058是一款经济高效、完全集成的高输入电压单电池锂离子电池充电器。充电器使用了锂离子电池所需的CC/CV充电曲线。充电器可接受高达27V的输入电压,但当输入电压超过OVP时禁用阈值,通常为6.8V&am…

比较完整一些chatGPT项目代码(权威)

https://gitee.com/zccbbg/chatgpt-springboot-service yml中的配置文件无法读取,前端访问比较困难。

倒置边框半径卡片

效果展示 CSS 知识点 实现多曲面的思路 实现整体布局 <div class"card"><div class"img_box"></div><div class"content"><div class"price"></div></div> </div>.card {position…

Vue动态绑定class

目录 绑定对象 绑定数组 用在组件上 组件内只有一个根元素 组件内有多个元素 class与动态class是可以一起使用的 绑定对象 :class "{ 类名1: 判断条件1, 类名2: 判断条件2, ... }" 如果类名后面对应的条件成立&#xff0c;则类名就会添加 案例 <template&…

Idea执行Pom.xml导入jar包提示sun.misc.BASE64Encoder jar找不到---SpringCloud工作笔记197

奇怪之前都是好好的,这个是因为,jdk的版本不对,重新打开以后自动被选择成jdk11了...记录一下 原因是从jdk9的时候,这个jar包已经被删除了,所以会报错,如果你用的是jdk自带的这个jar包就会报错,那么还可以,修改,不让他用jdk的,让他用 用org.apache.commons.codec.binary.Base64…

双边滤波算法及例程

双边滤波算法是一种非线性滤波技术&#xff0c;用于平滑图像并保留边缘细节。它在计算像素的平均值时考虑了两个因素&#xff1a;1&#xff09;空间域的距离和2&#xff09;灰度值之间的差异。 算法步骤如下&#xff1a; 定义一个窗口&#xff0c;包含待处理像素及其周围邻域…

EMC Unity存储(VNXe) service Mode和Normal Mode的一些说明

本文介绍下EMC unity存储设备&#xff08;也包含VNXe存储设备&#xff09;的两种工作模式&#xff1a; Service mode&#xff1a;也叫做rescue mode&#xff0c;存储OS工作不正常或者有其他故障&#xff0c;就会进入这个模式&#xff0c;无法对外提供服务Normal mode&#xff…

【04】基础知识:React组件实例三大核心属性 - state

一、state 了解 理解 1、state 是组件对象最重要的属性&#xff0c;值是对象&#xff08;可以包含多个 key-value 的组合&#xff09; 2、组件被称为 “状态机”&#xff0c; 通过更新组件的 state 来更新对应的页面显示&#xff08;重新渲染组件&#xff09; 强烈注意 1、…

centos / oracle Linux 常用运维命令讲解

目录 1.shell linux常用目录&#xff1a; 2.命令格式 3.man 帮助 4.提示符 5.echo输出字符串或变量值 6.date显示及设置系统的时间或日期 7.重启系统 8.关闭系统 9.登录注销 10.wget 下载文件 11.ps 查看系统的进程 12.top动态监视进程信息和系统负载等信息 13.l…

四、RocketMQ发送普通消息、批量消息和延迟消息

Producer发送普通消息的方式 1.同步发送消息 同步消息代表发送端发送消息到broker之后&#xff0c;等待消息发送结果后&#xff0c;再次发送消息 实现步骤 创建生产端&#xff0c;声明在哪个生产组注册NameServer地址构建Message实体&#xff0c;指定topic、tag、body启动…

Windows PowerShell 软件安装

Windows Management Framework&#xff08;WMF&#xff09;5.1 包含PowerShell 5.1。默认情况下&#xff0c;Windows Server 2008 R2 SP1 将运行较旧的PowerShell版本 2.通过将 WMF 5.1 下载并安装到Windows Server 2008 R2 系统&#xff0c;我们可以将其升级到PowerShell版本 …

GBJ2510-ASEMI电源控制柜专用GBJ2510

编辑&#xff1a;ll GBJ2510-ASEMI电源控制柜专用GBJ2510 型号&#xff1a;GBJ2510 品牌&#xff1a;ASEMI 封装&#xff1a;GBJ-4 恢复时间&#xff1a;&#xff1e;50ns 正向电流&#xff1a;25A 反向耐压&#xff1a;1000V 芯片个数&#xff1a;4 引脚数量&#xf…

HBase 表如何按照某表字段排序后顺序存储的方法?

首先需要明白HBase表的排序规则&#xff1a; &#xff08;1&#xff09;rowkey排序&#xff08;字典排序&#xff09;——升序 &#xff08;2&#xff09;Column排序&#xff08;字典排序&#xff09;——升序 &#xff08;3&#xff09;时间戳排序——降序 rowkey 字典序排序…

计算机毕业设计选什么题目好?springboot 医院门诊在线预约挂号系统

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

高数笔记03:几何、物理应用

图源&#xff1a;文心一言 本文是我学习高等数学几何、物理应用的一些笔记和心得&#xff0c;希望可以与考研路上的小伙伴一起努力上岸~~&#x1f95d;&#x1f95d; 第1版&#xff1a;查资料、画导图~&#x1f9e9;&#x1f9e9; 参考资料&#xff1a;《高等数学 基础篇》武…

读书笔记:多Transformer的双向编码器表示法(Bert)-3

多Transformer的双向编码器表示法 Bidirectional Encoder Representations from Transformers&#xff0c;即Bert&#xff1b; 第3章 Bert实战 学习如何使用预训练的BERT模型&#xff1a; 如何使用预训练的BERT模型作为特征提取器&#xff1b;探究Hugging Face的Transforme…