ES(笔记)
es就是json请求体代替字符串查询
dsl查询和过滤,一个模糊查询,一个非模糊查询
must,should 做模糊查询的,里面都是match,根据查询内容进行匹配,filter过滤,term词元查询,就是等值查询。range
-
query : 查询,所有的查询条件在query里面
-
bool : 组合搜索bool可以组合多个查询条件为一个查询对象,这里包含了 DSL查询和DSL过滤的条件
-
must : 必须匹配 :与(must) 或(should) 非(must_not)
-
match:分词匹配查询,会对查询条件分词 , multi_match :多字段匹配
-
filter: 过滤条件
-
term:词元查询,不会对查询条件分词
-
from,size :分页
-
_source :查询结果中需要哪些列
-
sort:排序
分词器:
什么叫分词,在全文检索的理论中,通过关键字查询文档索引进行匹配
倒排索引,正派索引
正排索引,就是一个一个匹配,然后赛选数据。
倒排索引:根据分词器进行分词,语义转换,排序,分组操作生成词元,词元对应文档id
操作es,首先要获取客户端,所以我们要工具类,拿到客户端。
es为什么查询快,因为基于倒排索引,然后就问你倒排索引,非常热点的面试题。
分词器作用
数据的查询是否精准和分词器有很大关系,它默认是英文的分词器
中文的分词器
IK分词器
ES对中文做分词器,默认是英文分词器,10年了还是IK分词器。
要写上,anlyzer:“ik smart”
ik 分词器中有个config文件夹,加上自己想要分词的词语即可。
解压后放到Es插件中
mappering 映射 都是自动给我们创建的,有默认mappering
给的什么数据,就自动解析,默认映射类型。
详细映射写法
analyzer 索引分词器,索引创建时使用的分词器
search_analyzer: 搜索改字段的值,传入的查询内容的分词器。
多字段索引:当对该字段需要使用多种索引模式时使用。如:城市搜索 New York"city":"city":{ "type": "text", "analyzer": "ik_smart", "fields": { "raw": { "type": "keyword" } } } 解释:相当于给 city取了一个别名 city.raw,city的类型为text , city.raw的类型keyword 搜索 city分词 ; 搜索city.raw 不分词那么以后搜索过滤和排序就可以使用city.raw字段名 |
相当于又是text又是keyword?
排序不分词,相当于多了个别名。
默认文档映射
public class ESClientUtil {public static TransportClient getClient(){TransportClient client = null;Settings settings = Settings.builder().put("cluster.name", "elasticsearch").build();try {client = new PreBuiltTransportClient(settings).addTransportAddress(new TransportAddress(InetAddress.getByName("127.0.0.1"), 9300));} catch (UnknownHostException e) {e.printStackTrace();}return client;}}
API结合Es
简单的增删改查,就不讲了吧,大概流程都是差不多,都是获取的客户端.方法,增删改查的。
先批量插入100条数据,做测试用的
@Testpublic void test4(){
// 批量新增100次TransportClient client = esClientUtil.getClient();BulkRequestBuilder bulkRequestBuilder = client.prepareBulk("shopcar99", "user");for (int i = 0; i < 100; i++) {IndexRequestBuilder indexRequestBuilder = client.prepareIndex("shopcar99", "user", i + "");HashMap<String, Object> map = new HashMap<>();map.put("id",i);map.put("name","zhang"+i);map.put("sex",i%2==0?"n":"nv");map.put("age",26+i);map.put("intro",i+"qweqeq");indexRequestBuilder.setSource(map);bulkRequestBuilder.add(indexRequestBuilder);}BulkResponse bulkItemResponses = bulkRequestBuilder.get();System.out.println(bulkItemResponses);}
DSL查询+DSL过滤
主要的层级关系
query -> bool -> must -> match
先去那query,再去拿bool,分词是must-》match
filter->range
把层级理清楚了,代码就懂了。
@Testpublic void test5(){TransportClient client = esClientUtil.getClient();SearchRequestBuilder requestBuilder = client.prepareSearch("shopcar99");SearchRequestBuilder user = requestBuilder.setTypes("user");
// 3分页查询,排序,指定查询字段,查询条件
// 分页requestBuilder.setFrom(0);requestBuilder.setSize(10);
// paixurequestBuilder.addSort("age",SortOrder.ASC);
// 第一个字段叫做包含的 会查出第一个参数中设置的字段
// 第二个参数 exclude 排除 就是排除掉第二个参数中的字段,其他字段全部都要查出来。String [] include = {"id","name","age","sex","intro"};requestBuilder.setFetchSource(include,null);
// 为什么要用bool,
// query -> bool -> must -> match
// bool,直接拿到bool那个层级
// 分词区间等级查询,must->matchBoolQueryBuilder boolQuery = QueryBuilders.boolQuery();List<QueryBuilder> must = boolQuery.must();
// 模糊查询
// must.add(QueryBuilders.matchQuery("intro","1"));MatchQueryBuilder matchQueryBuilder = QueryBuilders.matchQuery("intro", "qweqeq");must.add(matchQueryBuilder);
// bool->filter->rangeList<QueryBuilder> filter = boolQuery.filter();QueryBuilders.rangeQuery("age").gte(30).lte(70);//等值查询TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("sex", "n");filter.add(termQueryBuilder);requestBuilder.setQuery(boolQuery);SearchResponse searchResponse = requestBuilder.get();SearchHits hits = searchResponse.getHits();System.out.println(hits.getTotalHits());SearchHit[] hits1 = hits.getHits();
// hits里面还有hits,这里面就是数据for (SearchHit documentFields : hits1) {System.out.println(documentFields.getSourceAsMap());}client.close();}
相关文章:
ES(笔记)
es就是json请求体代替字符串查询 dsl查询和过滤,一个模糊查询,一个非模糊查询 must,should 做模糊查询的,里面都是match,根据查询内容进行匹配,filter过滤,term词元查询,就是等值查…...
开箱即用的fastposter海报生成器
什么是 fastposter ? fastposter 海报生成器是一款快速开发海报的工具。只需上传一张背景图,在对应的位置放上组件(文字、图片、二维码、头像)即可生成海报。 点击代码直接生成各种语言 SDK 的调用代码,方便快速开发。 软件特性&…...
力扣每日一题 6/28 动态规划/数组
博客主页:誓则盟约系列专栏:IT竞赛 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ 2742.给墙壁刷油漆【困难】 题目: 给你两个长度为 n 下标从 0…...
[数据集][目标检测]游泳者溺水检测数据集VOC+YOLO格式8275张4类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):8275 标注数量(xml文件个数):8275 标注数量(txt文件个数):8275 标注…...
若依 ruoyi 分离版 vue 简单的行内编辑实现
需要实现的效果:双击文本 - 修改文本 - 保存修改。 原码:仅文本显示文字内容 <el-table-column label"商品" align"center" prop"goodsName" width"200" v-if"columns[1].visible" /> 实现…...
【工具】API文档生成DocFX
文章目录 总述示例第一步:安装 DocFX第二步:初始化项目第三步:编辑配置文件第四步:编写文档第五步:生成文档第六步:预览文档第七步:部署文档 总述 DocFX 是一个由微软开发的开源文档生成工具&a…...
在 JavaScript 中处理异步操作和临时事件处理程序
关键技术和设计总结 使用 Promise 和 then 进行异步操作: 我们通过使用 Promise 来处理异步操作,确保操作按顺序执行。在 getReportListByCurrentTime 函数中,返回一个 Promise 对象,保证在数据加载完成后调用 resolve,以便可以在…...
[Cocos Creator] v3.8开发知识点记录(持续更新)
问题:从 cc 里找不到宏定义 CC_PREVIEW 等。 解决方案:找不到就自己定义,将 declare const CC_PREVIEW; 添加到需要的ts文件里。参考:creator3d 找不到宏定义如 CC_EDITOR,CC_PREVIEW,CC_JSB - Creator 3.x…...
Excel_VBA编程
在Excel中,VBA(Visual Basic for Applications)是一种强大的工具,可以用来自动化各种任务。下面介绍一些常用的VBA函数和程序结构: 常用函数 MsgBox:用于显示消息框。 MsgBox "Hello, World!"In…...
Java中的Path类使用详解及最佳实践
Java中的Path类使用详解及最佳实践 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将深入探讨Java中的Path类,这是Java标准库中用于操作文件…...
生成和查看预定义宏
参考下面的指令 arm-none-eabi-gcc -marcharmv7e-m -dM -E - < /dev/null | grep SYNC这个指令是用来生成和查看预定义宏(macros)的一种方法。让我们逐步分解和解释这个命令的各个部分: arm-none-eabi-gcc: 这是 ARM 架构下的交叉编译器…...
Redis 7.x 系列【12】数据类型之基数统计(HyperLogLog)
有道无术,术尚可求,有术无道,止于术。 本系列Redis 版本 7.2.5 源码地址:https://gitee.com/pearl-organization/study-redis-demo 文章目录 1. 概述2. 常用命令2.1 PFADD2.2 PFCOUNT2.3 PFMERGE 3. 应用场景 1. 概述 基数表示数…...
开源大模型RAG企业本地知识库问答机器人-ChatWiki
ChatWiki ChatWiki是一款开源的知识库 AI 问答系统。系统基于大语言模型(LLM )和检索增强生成(RAG)技术构建,提供开箱即用的数据处理、模型调用等能力,可以帮助企业快速搭建自己的知识库 AI 问答系统。 开…...
基于Java的蛋糕预定系统【附源码+LW】
摘 要 当今社会进入了科技进步、经济社会快速发展的新时代。国际信息和学术交流也不断加强,计算机技术对经济社会发展和人民生活改善的影响也日益突出,人类的生存和思考方式也产生了变化。传统购物方式采取了人工的管理方法,但这种管理方法存…...
Java框架的原理主要基于以下几个核心
本人详解 作者:王文峰,参加过 CSDN 2020年度博客之星,《Java王大师王天师》 公众号:JAVA开发王大师,专注于天道酬勤的 Java 开发问题中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯 山峯 转载说明:务必注明来源(注明:作者:王文峰…...
已解决javax.xml.bind.MarshalException:在RMI中,参数或返回值无法被编组的正确解决方法,亲测有效!!!
已解决javax.xml.bind.MarshalException:在RMI中,参数或返回值无法被编组的正确解决方法,亲测有效!!! 目录 问题分析 出现问题的场景 服务器端代码 客户端代码 报错原因 解决思路 解决方法 1. 实现…...
仓库管理系统17--客户管理
原创不易,打字不易,截图不易,多多点赞,送人玫瑰,留有余香,财务自由明日实现 1、添加用户控件 <UserControl x:Class"West.StoreMgr.View.CustomerView"xmlns"http://schemas.microsof…...
笔记本重装系统怎么操作? windows电脑重装系统,超实用的四种方法
重新安装操作系统是维护计算机性能和确保系统稳定运行的重要步骤。对于 Windows 笔记本用户而言,熟悉重装系统的方法可以帮助他们解决各种问题,从提高系统速度到修复软件故障。然而具体来讲,笔记本重装系统怎么操作呢?接下来&…...
【高考志愿】计算机
目录 一、专业概述 二、就业方向 三、选择建议 四、注意事项 五、计算机专业学科排名 高考志愿选择计算机专业,无疑是一个充满挑战与机遇的决策。这个专业以其广泛的应用领域、前沿的技术研究和可观的就业前景,吸引了无数考生的目光。 一、专业概述…...
使用ExpandableListView创建可扩展列表
使用ExpandableListView创建可扩展列表 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将深入探讨如何使用Android中的ExpandableListView创建可扩展列…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...
Axios请求超时重发机制
Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式: 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...
NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...
大学生职业发展与就业创业指导教学评价
这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...
全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...
Android第十三次面试总结(四大 组件基础)
Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: onCreate() 调用时机:Activity 首次创建时调用。…...
Linux 内存管理实战精讲:核心原理与面试常考点全解析
Linux 内存管理实战精讲:核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用,还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...
站群服务器的应用场景都有哪些?
站群服务器主要是为了多个网站的托管和管理所设计的,可以通过集中管理和高效资源的分配,来支持多个独立的网站同时运行,让每一个网站都可以分配到独立的IP地址,避免出现IP关联的风险,用户还可以通过控制面板进行管理功…...
Web中间件--tomcat学习
Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机,它可以执行Java字节码。Java虚拟机是Java平台的一部分,Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...
