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创建可扩展列…...

多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...
ssc377d修改flash分区大小
1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...

Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...
数据库分批入库
今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...
C++.OpenGL (14/64)多光源(Multiple Lights)
多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...
GitHub 趋势日报 (2025年06月06日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...
Caliper 负载(Workload)详细解析
Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...

系统掌握PyTorch:图解张量、Autograd、DataLoader、nn.Module与实战模型
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文通过代码驱动的方式,系统讲解PyTorch核心概念和实战技巧,涵盖张量操作、自动微分、数据加载、模型构建和训练全流程&#…...