【ElasticSearch8.X】学习笔记(三)

本文介绍了如何在ElasticSearch8.x中集成和使用IK分词器,包括下载、安装、使用以及自定义分词效果。同时,讲解了文档得分的原理,即TF-IDF公式。此外,还涉及了使用新JavaAPI进行操作,包括maven依赖、客户端连接及证书处理,并展示了创建、查询和删除文档的代码示例。

六、中文分词

为了能够更好地对中文进行搜索和查询,就需要在Elasticsearch中集成好的分词器插件,而 IK 分词器就是用于对中文提供支持得插件

6.1、下载

选择下载的版本要与 Elasticsearch 版本对应。我们这里选择 8.1.0
下载地址

6.2、安装

如果是es集群的话,每台es都需要安装ik分词器
先在plugins里创建elasticsearch-analysis-ik文件夹
安装包上传到elk的 elasticsearch-analysis-ik中并解压

unzip elasticsearch-analysis-ik-8.1.0.zip

重启elk即可

6.3、使用

IK 分词器提供了两个分词算法:

  • ik_smart: 最少切分
  • ik_max_word:最细粒度划分
GET _analyze
{
 "analyzer": "ik_smart",
 "text": ["我是一个学生"]
}

在这里插入图片描述

GET _analyze
{
 "analyzer": "ik_max_word",
 "text": ["我是一个学生"]
}

在这里插入图片描述

6.4、自定义分词效果

集群都是一样操作
/usr/soft/elasticsearch8/plugins/elasticsearch-analysis-ik-8.1.0/config
新建分词eg.dic
在这里插入图片描述
修改配置文件:IKAnalyzer.cfg.xml
在这里插入图片描述
重启集群
在这里插入图片描述

七、文档得分

Lucene 和 ES 的得分机制是一个基于词频和逆文档词频的公式,简称为 TF-IDF 公式
在这里插入图片描述
公式中将查询作为输入,使用不同的手段来确定每一篇文档的得分,将每一个因素最后通过公式综合起来,返回该文档的最终得分。这个综合考量的过程,就是我们希望相关的文档被优先返回的考量过程。在 Lucene 和 ES 中这种相关性称为得分。

  • TF (词频)
    Term Frequency : 搜索文本中的各个词条(term)在查询文本中出现了多少次,出现次数越多,就越相关,得分会比较高
  • IDF(逆文档频率)
    Inverse Document Frequency : 搜索文本中的各个词条(term)在整个索引的所有文档中出现了多少次,出现的次数越多,说明越不重要,也就越不相关,得分就比较低。

分析文档数据打分过程

# 增加分析参数
GET /myindex/_search?explain=true
{
 "query": {
 "match_all": {}
 }
}

八、新JavaAPI

8.1、maven

<dependencies>
 <dependency>
     <groupId>org.elasticsearch.plugin</groupId>
     <artifactId>x-pack-sql-jdbc</artifactId>
     <version>8.1.0</version>
 </dependency>
 <dependency>
     <groupId>co.elastic.clients</groupId>
     <artifactId>elasticsearch-java</artifactId>
     <version>8.1.0</version>
 </dependency>
 <dependency>
     <groupId>com.fasterxml.jackson.core</groupId>
     <artifactId>jackson-databind</artifactId>
     <version>2.12.3</version>
 </dependency>
 <dependency>
     <groupId>jakarta.json</groupId>
     <artifactId>jakarta.json-api</artifactId>
     <version>2.0.1</version>
 </dependency>
</dependencies>

8.2、获取客户端操作

Java 通过客户端操作 Elasticsearch 也要获取到连接后才可以。咱们现在使用的基于 https 安全的 Elasticsearch 服务,所以首先我们需要将之前的证书进行一个转换

cd /usr/soft/elasticsearch8/config/certs

openssl pkcs12 -in elastic-stack-ca.p12 -clcerts -nokeys -out java-ca.crt

将java-ca.crt下载下来 在项目文件下创建cert文件夹,并将java-ca.crt拷贝进去
在这里插入图片描述

8.2、UserBean

import java.io.Serializable;

public class User implements Serializable {
   
   
    private Integer id;
    private String name;
    private Integer age;
    public Integer getId() {
   
   return id;}
    public void setId(Integer id) this.id = id;}
    public String getName() {
   
   return name;}
    public void setName(String name) {
   
   this.name = name;}
    public Integer getAge() {
   
   return age;}
    public void setAge(Integer age) {
   
   this.age = age;}
    public User() {
   
   }
    public User(Integer id, String name, Integer age
### Elasticsearch 8.x 版本学习笔记 #### 关键特性概述 Elasticsearch 是一款分布式搜索引擎,支持实时搜索、多租户等功能。其核心优势在于能够快速处理大量数据并提供高效的全文检索能力[^1]。 #### 安装与启动 对于初次使用者来说,可以从官方网站下载适合的操作系统版本进行安装。完成安装后通过命令行工具执行 `bin/elasticsearch` 启动服务实例。为了确保集群稳定运行,建议按照官方文档中的最佳实践来调整JVM参数和其他环境变量设置[^2]。 #### 创建索引及Mapping定义 创建一个新的索引时可以通过API指定名称以及配置文件路径: ```json PUT /my-index-000001 { "settings": { "index.number_of_shards": 3, "index.number_of_replicas": 2 }, "mappings": { "_source": { "enabled": true }, "properties": { "name": {"type": "keyword"}, "description": {"type": "text"} } } } ``` 此段代码展示了如何设定shard数量和副本数,并为特定字段指定了相应的类型——例如这里设置了`name`作为关键字型(`keyword`)而`description`则被设成文本型(`text`)[^3]。 #### 动态模板应用 当面对未知结构的数据源时,动态模板允许自动识别新加入字段的性质从而为其分配最恰当的数据表示形式。这极大地方便了灵活应对各种业务场景下的需求变化。 ```json PUT _template/my_template_1 { "index_patterns": ["te*", "bar*"], "priority": 1, "version": 5, "settings": {}, "aliases": {}, "mappings": { "dynamic_templates": [ { "strings_as_keywords": { "match_mapping_type": "string", "mapping": { "type": "keyword" } } } ] } } ``` 这段JSON片段说明了一个简单的动态模板案例,其中任何匹配模式下新增加字符串类型的字段都将默认转换成关键词类型存储。 #### 正排索引 vs 倒排索引 正排索引指的是基于唯一标识符查找对应记录的方式;相反地,倒排索引则是依据某些特征值反向定位到拥有这些特性的所有条目集合之中。这种机制使得即使是在海量数据库里也能迅速实现精准查询操作[^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值