当前位置: 首页 > news >正文

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查询和过滤&#xff0c;一个模糊查询&#xff0c;一个非模糊查询 must&#xff0c;should 做模糊查询的&#xff0c;里面都是match&#xff0c;根据查询内容进行匹配&#xff0c;filter过滤&#xff0c;term词元查询&#xff0c;就是等值查…...

开箱即用的fastposter海报生成器

什么是 fastposter ? fastposter 海报生成器是一款快速开发海报的工具。只需上传一张背景图&#xff0c;在对应的位置放上组件&#xff08;文字、图片、二维码、头像&#xff09;即可生成海报。 点击代码直接生成各种语言 SDK 的调用代码&#xff0c;方便快速开发。 软件特性&…...

力扣每日一题 6/28 动态规划/数组

博客主页&#xff1a;誓则盟约系列专栏&#xff1a;IT竞赛 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 2742.给墙壁刷油漆【困难】 题目&#xff1a; 给你两个长度为 n 下标从 0…...

[数据集][目标检测]游泳者溺水检测数据集VOC+YOLO格式8275张4类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;8275 标注数量(xml文件个数)&#xff1a;8275 标注数量(txt文件个数)&#xff1a;8275 标注…...

若依 ruoyi 分离版 vue 简单的行内编辑实现

需要实现的效果&#xff1a;双击文本 - 修改文本 - 保存修改。 原码&#xff1a;仅文本显示文字内容 <el-table-column label"商品" align"center" prop"goodsName" width"200" v-if"columns[1].visible" /> 实现…...

【工具】API文档生成DocFX

文章目录 总述示例第一步&#xff1a;安装 DocFX第二步&#xff1a;初始化项目第三步&#xff1a;编辑配置文件第四步&#xff1a;编写文档第五步&#xff1a;生成文档第六步&#xff1a;预览文档第七步&#xff1a;部署文档 总述 DocFX 是一个由微软开发的开源文档生成工具&a…...

在 JavaScript 中处理异步操作和临时事件处理程序

关键技术和设计总结 使用 Promise 和 then 进行异步操作: 我们通过使用 Promise 来处理异步操作&#xff0c;确保操作按顺序执行。在 getReportListByCurrentTime 函数中&#xff0c;返回一个 Promise 对象&#xff0c;保证在数据加载完成后调用 resolve&#xff0c;以便可以在…...

[Cocos Creator] v3.8开发知识点记录(持续更新)

问题&#xff1a;从 cc 里找不到宏定义 CC_PREVIEW 等。 解决方案&#xff1a;找不到就自己定义&#xff0c;将 declare const CC_PREVIEW; 添加到需要的ts文件里。参考&#xff1a;creator3d 找不到宏定义如 CC_EDITOR&#xff0c;CC_PREVIEW&#xff0c;CC_JSB - Creator 3.x…...

Excel_VBA编程

在Excel中&#xff0c;VBA&#xff08;Visual Basic for Applications&#xff09;是一种强大的工具&#xff0c;可以用来自动化各种任务。下面介绍一些常用的VBA函数和程序结构&#xff1a; 常用函数 MsgBox&#xff1a;用于显示消息框。 MsgBox "Hello, World!"In…...

Java中的Path类使用详解及最佳实践

Java中的Path类使用详解及最佳实践 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们将深入探讨Java中的Path类&#xff0c;这是Java标准库中用于操作文件…...

生成和查看预定义宏

参考下面的指令 arm-none-eabi-gcc -marcharmv7e-m -dM -E - < /dev/null | grep SYNC这个指令是用来生成和查看预定义宏&#xff08;macros&#xff09;的一种方法。让我们逐步分解和解释这个命令的各个部分&#xff1a; arm-none-eabi-gcc: 这是 ARM 架构下的交叉编译器…...

Redis 7.x 系列【12】数据类型之基数统计(HyperLogLog)

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Redis 版本 7.2.5 源码地址&#xff1a;https://gitee.com/pearl-organization/study-redis-demo 文章目录 1. 概述2. 常用命令2.1 PFADD2.2 PFCOUNT2.3 PFMERGE 3. 应用场景 1. 概述 基数表示数…...

开源大模型RAG企业本地知识库问答机器人-ChatWiki

ChatWiki ChatWiki是一款开源的知识库 AI 问答系统。系统基于大语言模型&#xff08;LLM &#xff09;和检索增强生成&#xff08;RAG&#xff09;技术构建&#xff0c;提供开箱即用的数据处理、模型调用等能力&#xff0c;可以帮助企业快速搭建自己的知识库 AI 问答系统。 开…...

基于Java的蛋糕预定系统【附源码+LW】

摘 要 当今社会进入了科技进步、经济社会快速发展的新时代。国际信息和学术交流也不断加强&#xff0c;计算机技术对经济社会发展和人民生活改善的影响也日益突出&#xff0c;人类的生存和思考方式也产生了变化。传统购物方式采取了人工的管理方法&#xff0c;但这种管理方法存…...

Java框架的原理主要基于以下几个核心

本人详解 作者:王文峰,参加过 CSDN 2020年度博客之星,《Java王大师王天师》 公众号:JAVA开发王大师,专注于天道酬勤的 Java 开发问题中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯 山峯 转载说明:务必注明来源(注明:作者:王文峰…...

已解决javax.xml.bind.MarshalException:在RMI中,参数或返回值无法被编组的正确解决方法,亲测有效!!!

已解决javax.xml.bind.MarshalException&#xff1a;在RMI中&#xff0c;参数或返回值无法被编组的正确解决方法&#xff0c;亲测有效&#xff01;&#xff01;&#xff01; 目录 问题分析 出现问题的场景 服务器端代码 客户端代码 报错原因 解决思路 解决方法 1. 实现…...

仓库管理系统17--客户管理

原创不易&#xff0c;打字不易&#xff0c;截图不易&#xff0c;多多点赞&#xff0c;送人玫瑰&#xff0c;留有余香&#xff0c;财务自由明日实现 1、添加用户控件 <UserControl x:Class"West.StoreMgr.View.CustomerView"xmlns"http://schemas.microsof…...

笔记本重装系统怎么操作? windows电脑重装系统,超实用的四种方法

重新安装操作系统是维护计算机性能和确保系统稳定运行的重要步骤。对于 Windows 笔记本用户而言&#xff0c;熟悉重装系统的方法可以帮助他们解决各种问题&#xff0c;从提高系统速度到修复软件故障。然而具体来讲&#xff0c;笔记本重装系统怎么操作呢&#xff1f;接下来&…...

【高考志愿】计算机

目录 一、专业概述 二、就业方向 三、选择建议 四、注意事项 五、计算机专业学科排名 高考志愿选择计算机专业&#xff0c;无疑是一个充满挑战与机遇的决策。这个专业以其广泛的应用领域、前沿的技术研究和可观的就业前景&#xff0c;吸引了无数考生的目光。 一、专业概述…...

使用ExpandableListView创建可扩展列表

使用ExpandableListView创建可扩展列表 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们将深入探讨如何使用Android中的ExpandableListView创建可扩展列…...

地震勘探——干扰波识别、井中地震时距曲线特点

目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波&#xff1a;可以用来解决所提出的地质任务的波&#xff1b;干扰波&#xff1a;所有妨碍辨认、追踪有效波的其他波。 地震勘探中&#xff0c;有效波和干扰波是相对的。例如&#xff0c;在反射波…...

Java - Mysql数据类型对应

Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

Qt Http Server模块功能及架构

Qt Http Server 是 Qt 6.0 中引入的一个新模块&#xff0c;它提供了一个轻量级的 HTTP 服务器实现&#xff0c;主要用于构建基于 HTTP 的应用程序和服务。 功能介绍&#xff1a; 主要功能 HTTP服务器功能&#xff1a; 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

AspectJ 在 Android 中的完整使用指南

一、环境配置&#xff08;Gradle 7.0 适配&#xff09; 1. 项目级 build.gradle // 注意&#xff1a;沪江插件已停更&#xff0c;推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

Mobile ALOHA全身模仿学习

一、题目 Mobile ALOHA&#xff1a;通过低成本全身远程操作学习双手移动操作 传统模仿学习&#xff08;Imitation Learning&#xff09;缺点&#xff1a;聚焦与桌面操作&#xff0c;缺乏通用任务所需的移动性和灵活性 本论文优点&#xff1a;&#xff08;1&#xff09;在ALOHA…...

算法笔记2

1.字符串拼接最好用StringBuilder&#xff0c;不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...

BLEU评分:机器翻译质量评估的黄金标准

BLEU评分&#xff1a;机器翻译质量评估的黄金标准 1. 引言 在自然语言处理(NLP)领域&#xff0c;衡量一个机器翻译模型的性能至关重要。BLEU (Bilingual Evaluation Understudy) 作为一种自动化评估指标&#xff0c;自2002年由IBM的Kishore Papineni等人提出以来&#xff0c;…...

Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)

引言 工欲善其事&#xff0c;必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后&#xff0c;我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集&#xff0c;就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...

AI语音助手的Python实现

引言 语音助手(如小爱同学、Siri)通过语音识别、自然语言处理(NLP)和语音合成技术,为用户提供直观、高效的交互体验。随着人工智能的普及,Python开发者可以利用开源库和AI模型,快速构建自定义语音助手。本文由浅入深,详细介绍如何使用Python开发AI语音助手,涵盖基础功…...

倒装芯片凸点成型工艺

UBM&#xff08;Under Bump Metallization&#xff09;与Bump&#xff08;焊球&#xff09;形成工艺流程。我们可以将整张流程图分为三大阶段来理解&#xff1a; &#x1f527; 一、UBM&#xff08;Under Bump Metallization&#xff09;工艺流程&#xff08;黄色区域&#xff…...