Elasticsearch【域的属性、分词器、Elasticsearch搜索文档】(三)-全面详解(学习总结---从入门到深化)

news2024/11/15 8:02:59

目录

Elasticsearch常用操作_域的属性

分词器_默认分词器

分词器_IK分词器

分词器_拼音分词器

分词器_自定义分词器

Elasticsearch搜索文档_准备工作

Elasticsearch搜索文档_搜索方式


Elasticsearch常用操作_域的属性

index

该域是否创建索引。只有值设置为true,才能根据该域的关键词查询文档。

// 根据关键词查询文档
GET /索引名/_search
{
  "query":{
        "term":{
           搜索字段: 关键字
       }
   }
}

 type

域的类型

store 

是否单独存储。如果设置为true,则该域能够单独查询。

// 单独查询某个域:
GET /索引名/_search
{
  "stored_fields": ["域名"]
}

实时学习反馈

1. 在Elasticsearch中,只有域的属性设置为true,才能根据该域 的关键词查询文档

A type

B index

C store

D analyzer

2. 在Elasticsearch中,域的属性表示域的数据类型

A type

B index

C store

D analyzer

分词器_默认分词器

ES文档的数据拆分成一个个有完整含义的关键词,并将关键词与文 档对应,这样就可以通过关键词查询文档。要想正确的分词,需要 选择合适的分词器。

standard analyzer:Elasticsearch默认分词器,根据空格和标点 符号对英文进行分词,会进行单词的大小写转换。 

默认分词器是英文分词器,对中文的分词是一字一词。

查看分词效果

GET /_analyze
{
  "text":测试语句,
  "analyzer":分词器
}

 实时学习反馈

1. 在Elasticsearch中,默认分词器为

A standard analyzer

B IKAnalyzer

C pinyin analysis

D 没有默认分词器

2. 在Elasticsearch中,默认分词器对中文的分词

A 根据标点符号分词

B 根据空格符号分词

C 根据词汇分词

D 一字一词

分词器_IK分词器

IKAnalyzer是一个开源的,基于java语言开发的轻量级的中文分词 工具包。提供了两种分词算法:

1、ik_smart:最少切分

2、ik_max_word:最细粒度划分 

安装IK分词器

1、关闭es服务

2 、使用rz命令将ik分词器上传至虚拟机

注:ik分词器的版本要和es版本保持一致。

3、解压ik分词器到elasticsearch的plugins目录下

unzip elasticsearch-analysis-ik-7.17.0.zip -d /usr/local/elasticsearch1/plugins/analysis -ik

4、启动ES服务 

su es

#进入ES安装文件夹:
cd /usr/local/elasticsearch1/bin/

#启动ES服务:
./elasticsearch -d

测试分词器效果

GET /_analyze
{
 "text":"测试语句",
 "analyzer":"ik_smart/ik_max_word"
}

IK分词器词典

IK分词器根据词典进行分词,词典文件在IK分词器的config目录中。

1、main.dic:IK中内置的词典。记录了IK统计的所有中文单词。

2、IKAnalyzer.cfg.xml:用于配置自定义词库。

<properties>
        <comment>IK Analyzer 扩展配置</comment>
        <!--用户可以在这里配置自己的扩展字典 -->
        <entry key="ext_dict">ext_dict.dic</entry>
         <!--用户可以在这里配置自己的扩展停止词字典-->
        <entry key="ext_stopwords">ext_stopwords.dic</entry>
        <!--用户可以在这里配置远程扩展字典 -->
        <!-- <entry key="remote_ext_dict">words_location</entry> -->
        <!--用户可以在这里配置远程扩展停止词字典-->
        <!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>

实时学习反馈

1. IK分词器的算法分为

A ik_smart 和 ik_min_word

B ik_min_word 和 ik_max_word

C ik_smart 和 ik_max_word

D ik_smart 和 ik_max_word 和 ik_min_word

2. 在Elasticsearch中,测试分词器效果的方法为

A PUT /_analyze

B GET /_analyze

C POST /_analyze

D DELETE /_analyze 

分词器_拼音分词器

拼音分词器可以将中文分成对应的全拼,全拼首字母等。

安装拼音分词器

1、 关闭es服务

2 、使用rz命令将拼音分词器上传至虚拟机

注:拼音分词器的版本要和es版本保持一致。

3、解压ik分词器到elasticsearch的plugins目录下 

unzip elasticsearch-analysis-pinyin-7.17.0.zip -d /usr/local/elasticsearch1/plugins/analysis -pinyin

4、启动ES服务

su es

#进入ES安装文件夹:
cd /usr/local/elasticsearch1/bin/

#启动ES服务:
./elasticsearch

测试分词效果

GET /_analyze
{
 "text":测试语句,
 "analyzer":pinyin
}

实时学习反馈

1. 在Elasticsearch中,分词器存放的目录为

A bin

B config

C plugins

D log

分词器_自定义分词器

真实开发中我们往往需要对一段内容既进行文字分词,又进行拼音 分词,此时我们需要自定义ik+pinyin分词器。

创建自定义分词器 

1、在创建索引时自定义分词器

PUT /索引名
{
    "settings" : {
        "analysis" : {
            "analyzer" : {
                "ik_pinyin" : { //自定义分词器名
                  "tokenizer":"ik_max_word", // 基本分词器
                    "filter":"pinyin_filter"// 配置分词器过滤
               }
           },
            "filter" : { // 分词器过滤时配置另一个分词器,相当于同时使用两个分词器
               "pinyin_filter" : {
                   "type" : "pinyin", // 另一个分词器
                   // 拼音分词器的配置
                  "keep_separate_first_letter" : false, // 是否分词每个字的首字母
                   "keep_full_pinyin" :true, // 是否分词全拼
                   "keep_original" : true,// 是否保留原始输入
                   "remove_duplicated_term": true // 是否删除重复项
               }
           }
       }
   },
    "mappings":{
        "properties":{
            "域名1":{
                "type":域的类型,
                "store":是否单独存储,
                "index":是否创建索引,
       "analyzer":分词器
           },
            "域名2":{
                ...
           }
       }
   }
}

测试自定义分词器

GET /索引/_analyze
{
  "text": "你好童小纯",
  "analyzer": "ik_pinyin"
}

实时学习反馈

1. 在Elasticsearch中,如果既进行中文分词,又进行拼音分词, 我们可以使用

A 默认分词器

B 拼音分词器

C IK分词器

D 自定义分词器

Elasticsearch搜索文档_准备工作

Elasticsearch提供了全面的文档搜索方式,在学习前我们添加一些文档数据 

PUT /students
{
    "mappings":{
        "properties":{
            "id": {
               "type": "integer",
               "index": true
           },
           "name": {
               "type": "text",
               "store": true,
               "index": true,
               "analyzer": "ik_smart"
          },
          "info": {
              "type": "text",
              "store": true,
              "index": true,
              "analyzer": "ik_smart"
          }
       }
   }
}

POST /students/_doc/
{
  "id":1,
  "name":"童小纯",
  "info":"I love 童"
}


POST /students/_doc/
{
  "id":2,
  "name":"美羊羊",
  "info":"美羊羊是羊村最漂亮的人"
}


POST /students/_doc/
{
  "id":3,
  "name":"懒羊羊",
  "info":"懒羊羊的成绩不是很好"
}


POST /students/_doc/
{
  "id":4,
  "name":"小灰灰",
  "info":"小灰灰的年纪比较小"
}


POST /students/_doc/
{
  "id":5,
  "name":"沸羊羊",
  "info":"沸羊羊喜欢美羊羊"
}


POST /students/_doc/
{
  "id":6,
  "name":"灰太狼",
  "info":"灰太狼是小灰灰的父亲,每次都会说我一定会回来的"
}

1、文档搜索

GET /索引/_search
{
   "query":{
          搜索方式:搜索参数
     }
}

实时学习反馈

1. 在Elasticsearch中,文档搜索的请求路径为

A /索引/_mget

B /索引/_get

C /索引/_search

D /索引/_doc/id值

Elasticsearch搜索文档_搜索方式

1、match_all:查询所有文档

{
 "query":{
        "match_all":{}
   }
}

2、match:全文检索。将查询条件分词后再进行搜索。

{
 "query":{
        "match":{
            搜索字段:搜索条件
       }
   }
}

注:在搜索时关键词有可能会输入错误,ES搜索提供了自动 纠错功能,即ES的模糊查询。使用match方式可以实现模糊 查询。模糊查询对中文的支持效果一般,我们使用英文数据 测试模糊查询。

{
 "query": {
     "match": {
         "域名": {
                    "query": 搜索条件,
                    "fuzziness": 最多错误字符数,不能超过2
                }
             }
       }
}

实时学习反馈

1. 在Elasticsearch中,查询所有文档的搜索方式为

A match_all

B match

C match_phrase

D range

2. 在Elasticsearch中,自动纠错功能最多纠正的字符数为

A 1

B 2

C 3

D 4

2、range:范围搜索。对数字类型的字段进行范围搜索

{
 "query":{
        "range":{
            搜索字段:{
                "gte":最小值,
                "lte":最大值
           }
       }
   }
}
gt/lt:大于/小于
gte/lte:大于等于/小于等于

3、match_phrase:短语检索。搜索条件不做任何分词解析,在搜索字段对应的倒排索引中精确匹配。

 

{
 "query":{
        "match_phrase":{
            搜索字段:搜索条件
       }
   }
}

4、term/terms:单词/词组搜索。搜索条件不做任何分词解析,在搜索字段对应的倒排索引中精确匹配

{
 "query":{
        "term":{  
            搜索字段: 搜索条件
       }
   }
}
{
 "query":{
        "terms":{  
              搜索字段: [搜索条件1,搜索条件2]
       }
   }
}

 实时学习反馈

1. 在Elasticsearch中,范围搜索的搜索方式为

A match_all

B match

C match_phrase

D range

2. 在Elasticsearch中,词组检索的搜索方式为

A match_all

B match

C terms

D range

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【双指针】844. 比较含退格的字符串

844. 比较含退格的字符串 解题思路 思路&#xff1a;函数deLETE的作用是处理带有退格符号的字符串。它使用双指针法来模拟字符串处理。初始时&#xff0c;慢指针slow和快指针fast都指向字符串的开头。然后&#xff0c;通过遍历字符串&#xff0c;如果当前字符不是退格符号&…

postman报错提示 Could not get any response怎么解决

目录 postman报错 解决方法&#xff1a; 在通过postman请求做接口测试的过程中&#xff0c;有时候会遇到一些报错&#xff0c;当遇到这些报错我们不要着急&#xff0c;看着具体哪里报错&#xff0c;然后进行解决 postman报错 经常使用postman的小伙伴们都应该遇到过一些报错…

工作:三菱PLC之CC-LINK通讯知识及应用

工作&#xff1a;三菱PLC之CC-LINK通讯及应用 一. cc-link接线图&#xff08;RS485两线式接线&#xff09; CC-Link Ver.1.00兼容电缆&#xff08;特性阻抗&#xff1a;100Ω&#xff0c;终端电阻100Ω&#xff09; CC-Link Ver.1.10兼容电缆&#xff08;特性阻抗&#xff1a;…

Gradio库:使用Markdown模块创建交互式应用

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️ &#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…

如何使用多线程

一个进程正在运行时&#xff0c;至少会有一个线程在运行。 package ChapterOne;public class Test {public static void main(String[] args) {System.out.println(Thread.currentThread().getName());//currentThread方法返回正在被执行的线程的信息//getName返回正在被执行线…

【Docker】Docker实战

文章目录 搭建nginx服务搭建私有库Busybox阿里云上创建私有库 搭建nginx服务 首先拉取nginx的镜像。 docker pull nginx:1.24.0以后台的方式运行nginx&#xff0c;并且创建一个shell进行交互。 docker run --name nginx1 --rm -it -p 8080:80 nginx:1.24.0 bash#在交互的bas…

Kubernetes_核心组件_KubeProxy_Service找到Pod与DNS解析Service/Pod

文章目录 前言一、Service找到Pod(Iptables)二、Service找到Pod(IPVS)2.1 IPVS模式原理2.2 IPVS模式实践修改为 IPVS 模式 之前修改为 IPVS 模式之中修改为 IPVS 模式之后 三、Service和Pod的DNS域名3.1 Service DNS域名3.2 Service与Deployment/StatefulSet配合Deployment普通…

无源光网络(PON)介绍及其应用

文章目录 1、无源光网络&#xff08;PON&#xff09;介绍ONU&#xff08;Optical Network Unit&#xff09;&#xff0c;光网络单元OLT&#xff08;Optical line terminal&#xff09;&#xff0c;光线路终端 2、FTTH、FTTB、FTTR组网介绍FTTR组网规划 3、局端接入设备产品介绍…

Elasticsearch 基本使用(五)查询条件匹配方式(query query_string)

查询条件匹配方式 概述querytermtermsrangematch_allmatchmatch 匹配精度问题 match_phrasematch_pharse_prefixmatch_bool_prefixmulti_match query_string简单查询一个字段在多个字段上应用同一个条件 &#xff08;类似multi_match&#xff09;在所有字段上应用同一个条件 &a…

mysql 大数据量从“.log“文件插入方法

要被插入的数据文件以及内容 表结构 插入成功&#xff0c;插入时如果有主键唯一索引&#xff0c;则按照唯一索引的大小顺序插入&#xff0c;速度会快很多

基于Spring Boot的智能学生考勤系统设计与实现(Java+spring boot+MySQL+微信小程序+

获取源码或者论文请私信博主 演示视频&#xff1a; 基于Spring Boot的智能学生考勤系统设计与实现&#xff08;Javaspring bootMySQL微信小程序人脸识别&#xff09; 使用技术&#xff1a; 前端&#xff1a;html css javascript jQuery ajax thymeleaf 后端&#xff1a;Java…

SpringBoot 如何使用 TestEntityManager 进行 JPA 集成测试, 如何使用

Spring Boot 是一个非常流行的 Java Web 开发框架&#xff0c;它简化了开发过程&#xff0c;提高了开发效率。在开发过程中&#xff0c;我们通常需要使用 JPA 操作数据库&#xff0c;为了保证代码的质量和正确性&#xff0c;我们需要进行集成测试。TestEntityManager 是 Spring…

bat批处理脚本控制台输出中文乱码问题

背景 最近在搞springcloud框架&#xff0c;涉及各种微服务。比如服务注册与发现、网关、鉴权、文件服务、日志服务、搜索服务、用户中心等等。如果要打包发布应用&#xff0c;就得一个个去打包&#xff0c;一个个去拷贝jar包&#xff0c;很繁琐。所以就想着写个bat脚本&#x…

【Zookeeper】使用Curator操作Zookeeper

简介 Curator 是 Apache ZooKeeper 的Java客户端库。 Zookeeper现有常见的Java API如&#xff1a;原生JavaAPI、Curator、ZkClient等。 添加依赖 <dependency><groupId>org.apache.curator</groupId><artifactId>curator-framework</artifactId&…

gitlab:(二)gitlab添加win10 台式机的ssh key

当前gitlab版本为12系列&#xff1a; 点击settings 找到ssh keys &#xff0c;再找到“ generate one or use an existing key.” 点击 generate one 参考如下的教程&#xff1a; window cmd 命令行示例 添加 ssh keys 添加的效果

路由基本使用

编程式导航 默认路由 模糊匹配模式 精确匹配

【C语言】指针进化 !!!

前言 &#x1f388;大家好&#xff0c;我是何小侠&#x1f388; &#x1f343;大家可以叫我小何或者小侠&#x1f343; &#x1f490;希望能通过写博客加深自己对于学习内容的理解&#x1f490; &#x1f338;也能帮助更多人理解和学习&#x1f338; 兰生幽谷&#xff0c;不为…

Redis 五种基本数据结构及基本使用

一、数据结构 二、使用 2.1 String 的使用 Redis String 一个键对应一个值&#xff0c;并且是二进制安全的&#xff0c;值可以是图片或者序列化后的对象。 一个键最大能存储 512 MB。 2.1.1 set 命令的使用 set key value127.0.0.1:6379> set name yunhu OK 127.0.0.1:…

【Docker】docker基础使用

文章目录 docker概念什么是dockerdocker引擎迭代docker与虚拟机docker版本发展 docker基础docker架构docker Registry(镜像仓库)镜像仓库使用流程实际研发镜像仓库使用不同镜像仓库的拉取 docker常用命令镜像仓库命令docker logindocker pulldocker pushdocker searchdocker lo…

Github的加速访问(解决github进不去)

1.下载Steam Steam 现更名为 Watt Toolkit 并在 Microsoft Store 中已可用 2.打开Steam 3.勾选github 一键加速