ES面试题

1、如何同步索引库

同步调用
在完成数据库操作后,直接调用搜索服务提供的接口
异步通知
在完成数据库操作后,发送MQ消息
搜索服务监听MQ,接收到消息后完成数据修改
监听binlog

2、分词器

ik分词器
ik_smart
ik_max_word
自定义分词器
以拼音分词器为例
默认的拼音分词器会将每个汉字单独分为拼音,而我们希望的是每个词条形成一组拼音,需要对拼音分词器做个性化定制,形成自定义分词器。

elasticsearch中分词器(analyzer)的组成包含三部分:

character filters:在tokenizer之前对文本进行处理。例如删除字符、替换字符
tokenizer:将文本按照一定的规则切割成词条(term)。例如keyword,就是不分词;还有ik_smart
tokenizer filter:将tokenizer输出的词条做进一步处理。例如大小写转换、同义词处理、拼音处理等
文档分词时会依次由这三部分来处理文档:
在这里插入图片描述

PUT /test
{"settings": {"analysis": {"analyzer": { // 自定义分词器"my_analyzer": {  // 分词器名称"tokenizer": "ik_max_word","filter": "py" //和下面的过滤器名称相同}},"filter": { // 自定义tokenizer filter"py": { // 过滤器名称"type": "pinyin", // 过滤器类型,这里是pinyin"keep_full_pinyin": false,"keep_joined_full_pinyin": true,"keep_original": true,"limit_first_letter_length": 16,"remove_duplicated_term": true,"none_chinese_pinyin_tokenize": false}}}},"mappings": {"properties": {"name": {"type": "text","analyzer": "my_analyzer",	// 自定义的分词器"search_analyzer": "ik_smart"}}}
}

3、高亮设置

高亮一定要用全文检索查询
pre_tags:设置高亮字段的前置标签
post_tags:设置高亮字段的后置标签
注意:
1、默认情况下,高亮的字段,必须与搜索指定的字段一致,否则无法高亮,如果要对非搜索字段高亮,则需要添加一个属性:required_field_match=false
2、加高亮标签的地方,不是搜索的关键词,而是通过分词器对搜索的关键词进行分词得到的词条进行高亮
3、高亮是对关键字高亮,因此搜索条件必须带有关键字,而不能是范围这样的查询

4、倒排索引

倒排索引中有两个非常重要的概念:

  • 文档(Document):用来搜索的数据,其中的每一条数据就是一个文档。例如一个网页、一个商品信息

  • 词条(Term):对文档数据或用户搜索数据,利用某种算法分词,得到的具备含义的词语就是词条。例如:我是中国人,就可以分为:我、是、中国人、中国、国人这样的几个词条
    创建倒排索引是对正向索引的一种特殊处理,流程如下:

  • 将每一个文档的数据利用算法分词,得到一个个词条

  • 创建表,每行数据包括词条、词条所在文档id、位置等信息

  • 因为词条唯一性,可以给词条创建索引,例如hash表结构索引

正向和倒排
那么为什么一个叫做正向索引,一个叫做倒排索引呢?

正向索引是最传统的,根据id索引的方式。但根据词条查询时,必须先逐条获取每个文档,然后判断文档中是否包含所需要的词条,是根据文档找词条的过程。
而倒排索引则相反,是先找到用户要搜索的词条,根据词条得到保护词条的文档的id,然后根据id获取文档。是根据词条找文档的过程。
是不是恰好反过来了?

那么两者方式的优缺点是什么呢?

正向索引:
优点:
可以给多个字段创建索引
根据索引字段搜索、排序速度非常快
缺点:
根据非索引字段,或者索引字段中的部分词条查找时,只能全表扫描。

倒排索引:
优点:
根据词条搜索、模糊搜索时,速度非常快
缺点:
只能给词条创建索引,而不是字段
无法根据字段做排序

5、并发下如何保持读写一致

1、可以通过版本号使用乐观锁并发控制,以确保新版本不会被旧版本覆盖,由应用层来处理具体的冲突

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

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

相关文章

安静:内向性格的竞争力 - 三余书屋 3ysw.net

精读文稿 这期我们介绍的这本书叫做《安静》,副标题是《内向性格的竞争力》。本书共有267页,我会用大约25分钟的时间为你讲述书中的精髓。内向性格具备什么样的竞争力?内向性格的人在人际交往和日常生活中似乎总是吃亏,因为他们不…

Postman传对象失败解决

文章目录 情景复现解决方案总结 情景复现 postman中调用 debug发现pId传入失败 分析解释: 实体类中存在pId、uid和num字段 controller层将GoodsCar作为请求体传入 解决方案 当时觉得很奇怪,因为uid和num可以被接收,而pId和num的数据类型相…

安卓Activity上滑关闭效果实现

最近在做一个屏保功能,需要支持如图的上滑关闭功能。 因为屏保是可以左右滑动切换的,内部是一个viewpager 做这个效果的时候,关键就是要注意外层拦截触摸事件时,需要有条件的拦截,不能影响到内部viewpager的滑动处理…

学习Fast-LIO系列代码中相关概念理解

目录 一、流形和流形空间(姿态) 1.1 定义 1.2 为什么要有流形? 1.3 流形要满足什么性质? (1) 拓扑同胚 (2) 可微结构 1.4 欧式空间和流形空间的区别和联系? (1) 区别: (2) 联系: 1.5 将姿态定义在流形上比…

深入解析《企业级数据架构》:HDFS、Yarn、Hive、HBase与Spark的核心应用

写在前面 进入大数据阶段就意味着进入NoSQL阶段,更多的是面向OLAP场景,即数据仓库、BI应用等。 大数据技术的发展并不是偶然的,它的背后是对于成本的考量。集中式数据库或者基于MPP架构的分布数据库往往采用的都是性能稳定但价格较为昂贵的小…

创建VUE项目

设置淘宝源 npm config set registry https://registry.npm.taobao.org 或安装 npm install -g cnpm --registryhttps://registry.npm.taobao.org 创建项目cjhtest 1.vue create cjhtest 1.1 ? Please pick a preset: vue2_vuex_router ([Vue 2] less, babel, router, v…

上位机图像处理和嵌入式模块部署(qmacvisual之ROI设定)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 ROI,全称是region of interest,也就是感兴趣区域。这里面一般分成两种情况,一种是所有的算法都依赖于这个ROI&a…

管理阿里云服务器ECS -- 网站选型和搭建

小云:我已经学会了如何登录云服务器ECS了,但是要如何搭建网站呢? 老王:目前有很多的个人网站系统软件,其中 WordPress 是使用非常广泛的一款,而且也可以把 WordPress 当作一个内容管理系统(CMS…

JavaScript 权威指南第七版(GPT 重译)(四)

第九章:类 JavaScript 对象在第六章中有所涉及。该章将每个对象视为一组独特的属性,与其他对象不同。然而,通常有必要定义一种共享某些属性的对象类。类的成员或实例具有自己的属性来保存或定义它们的状态,但它们还具有定义其行为…

A - Environment-Friendly Travel Gym - 102501A

题意:给你一些交通方式和站点,不同的交通方式碳排放不一样,问从起点到终点距离不超过B的路径中最少的碳排放是多少。 思路:二维dijkstra,建图什么的倒不是很难,主要就是对二维dij的理解了; 表示…

HTTPS:原理、使用方法及安全威胁

文章目录 一、HTTPS技术原理1.1 主要技术原理1.2 HTTPS的工作过程1.2.1 握手阶段1.2.2 数据传输阶段 1.3 CA证书的签发流程1.4 HTTPS的安全性 二、HTTPS使用方法三、HTTPS安全威胁四、总结 HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket …

如何使用 ArcGIS Pro 自动矢量化水系

对于某些要素颜色统一的地图,比如电子地图,可以通过图像识别技术将其自动矢量化,这里为大家介绍一下 ArcGIS Pro 自动矢量化水系的方法,希望能对你有所帮助。 数据来源 教程所使用的数据是从水经微图中下载的电子地图数据&#…

借鉴LangChain思想使用Java实现大模型Function_Call工具开发及调用功能

关注公众号,回复“工具调用”获取代码。 背景 博主之前研究的是ChatGLM3模型,该模型提供了Openai方式调用工具的代码。但后续转到Qwen1.5模型后,好像不可以直接用Openai接口的方式调用工具了。 然后,博主研究了Qwen-Agent框架&a…

Stable Diffusion XL之核心基础内容

Stable Diffusion XL之核心基础内容 一. Stable Diffusion XL核心基础内容1.1 Stable Diffusion XL的主要优化1.2 SDXL整体架构初识1.3 VAE模型1.VAE基本介绍2. VAE基本模型结构3.VAE的训练 1.4 U-Net模型(Base部分)1. 十四个基本模块概述2. SDXL_Spatia…

[Linux_IMX6ULL驱动开发]-基础驱动

驱动的含义 如何理解嵌入式的驱动呢,我个人认为,驱动就是嵌入式上层应用操控底层硬件的桥梁。因为上层应用是在用户态,是无法直接操控底层的硬件的。我们需要利用系统调用(open、read、write等),进入内核态…

tensorflow安装以及在Anaconda中安装使用

在遥感领域进行深度学习时,通常使用python进行深度学习,会使用到tensorflow的安装,今天小编就给大家介绍如何在Anaconda中安装tensorflow! 下载Anaconda Index of /anaconda/archive/ | 清华大学开源软件镜像站 | Tsinghua Open…

【数据分享】1981-2023年全国各城市逐日、逐月、逐年平均气温(shp格式)

气象数据是我们在各种研究中都会使用到的基础数据,之前我们分享了Excel格式的1981-2023年全国各城市的逐日、逐月、逐年平均气温数据(可查看之前的文章获悉详情)。 好多小伙伴拿到数据后问我们有没有GIS矢量格式的该数据,我们专门…

C语言二叉树和堆(个人笔记)

二叉树和堆 二叉树1二叉树的概念和结构1.1特殊的二叉树1.2二叉树的性质(规定根节点的层数为1)1.3二叉树的存储结构 2.二叉树的顺序结构和实现2.1二叉树的顺序结构2.2堆的概念和结构2.3堆的实现2.4堆的应用2.4.1堆排序 2.5TOP-K问题 3.二叉树的遍历4.二叉…

国赛大纲解读

1. 第一部分,是针对5G基础知识的掌握,第二部分是人工智能基本算法的掌握,就是人工智能的应用,用5G+人工智能(AI算法)进行网络优化的问题,要有网络优化的基础知识,比如说:某个区域的覆盖问题,覆盖特别差,但有数据,覆盖电频,srp值这些数据给你,根据数据来判断是…

openssl AF_ALG引擎使用

cmd AF_ALG是Linux提供的一种虚拟接口,用于访问内核中的加密算法。在Linux中,可以使用AF_ALG接口配合加密算法框架(Crypto API)来进行加密操作。 以下是一个使用AF_ALG和openssl进行加密操作的例子: # 加密 openssl…