首页 > 其他分享 >ElasticSearch系列---【Es的快速入门文档】

ElasticSearch系列---【Es的快速入门文档】

时间:2022-12-17 03:00:27浏览次数:70  
标签:name --- 索引 ik 文档 es student ElasticSearch Es

Es的快速入门文档

1.对比数据库理解

ElasticSearch是面向文档型数据库,一条数据在这里就是一个文档。

 注意:从ElasticSearch6.X开始,一个Index下只能包含一个Type,因此,在ElasticSearch7.X及之后的版本已经删除了Type的概念。

2.倒排索引

 在关系型数据库中,我们经常通过索引找内容,但是在全文检索的场景中,关系型数据库通过like来逐行实现全文检索,数据量上来之后,显然不太现实。所以这时候就诞生了倒排索引,通过关键词建立索引,然后关联文档编号(id),通过关键词的匹配权重(score)来对文档进行排序。

3.IK分词器

github下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases

找到和es一样的版本,这里我用的es为7.13.4,ik也选7.13.4版本。

下载之后传到服务器上,创建ik文件夹,解压到ik目录下。创建Dockerfile文件,内容如下:

FROM elasticsearch:7.13.4
ADD ik /usr/share/elasticsearch/plugins/elasticsearch-analysis-ik

 如上图,含有ik分词器的es镜像已制作好。替换原来的镜像,重启es即可。

若使用的KubeSphere部署的es,参考下图:

 重启之后,验证ik分词器是否安装好了,如下图,则说明已安装好。

 这里我以Kibana为例,我们知道,ik分词器提供了两个分词算法:分别为ik_smart(最少切分)和ik_max_word(最细粒度切分)。

我这里输入"少年攻城狮说Java",期望切分成,"少年攻城狮","爱","中华人们共和国"。

ik_smart的切分结果:

 ik_max_word的切分结果:

 两种算法对比后,发现"少年攻城狮"没有被切到一起,这说明ik分词器字典里没有"少年攻城狮"这个词,这时候对于这种定制化名词,我们就需要自己添加到ik分词器的字典里。

 修改成功后,重新打镜像,替换原来的elasticsearch_ik:7.13.4镜像,重启es。

 如上图,显然,我们的字典已生效。

4.REST风格操作ES

常用数据类型

4.1.创建索引

第一种创建方式:类似设计表

PUT /test1
{
  "mappings": {
    "properties": {
      "name": {
        "type": "text"
      },
      "age": {
        "type": "long"
      },
      "birthday": {
        "type": "date"
      }
    }
  }  
}

第二种创建方式:默认识别类型

PUT /test2/_doc/1
{
  "name": "少年攻城狮",
  "age": 18,
  "birth": "1998-02-16"
}

#查看索引库默认属性,确认字段类型的默认值
GET test2

 4.2.查看全部索引信息

GET _cat/indices?v

 4.3.修改文档数据(推荐)

这种修改,当字段没有传的时候,不会覆盖成null值。

POST /test2/_doc/1/_update
{
  "doc": {
    "name": "张无忌"
  }
}

 4.4.删除索引

DELETE test

4.5.删除文档数据

DELETE test2/_doc/1

4.6.新增或修改文档数据(不推荐使用这种修改,推荐使用4.3的修改)

这个方法,存在就修改,不存在就新增,用这种方法做修改,少写了某个字段的时候,少写的字段的值会被赋上null值。

PUT /student/user/1
{
  "name": "张三",
  "age": 16,
  "desc": "一顿操作猛如虎",
  "tags": ["抽烟","喝酒"]
}

PUT /student/user/2
{
  "name": "里斯",
  "age": 18,
  "desc": "天王盖地虎",
  "tags": ["学习","喝酒"]
}

PUT /student/user/3
{
  "name": "王五",
  "age": 22,
  "desc": "宝塔镇河妖",
  "tags": ["旅游","喝酒"]
}

#根据id查看数据
GET /student/user/1

4.7.简单的查询

#根据id查询
GET /student/user/1 #_search代表查询操作,q代表查询条件
GET student/user/_search?q=name:张三

 4.8.复杂查询

 

标签:name,---,索引,ik,文档,es,student,ElasticSearch,Es
From: https://www.cnblogs.com/hujunwei/p/16988570.html

相关文章

  • Educational Codeforces Round 140 D
    D.Playoff题链我们观察样例或者自己想一想就可以知道这个答案一定是一段连续的数字那么我们考虑如何确定这个答案的上下界即可而且只要给出的字符串s有一个0那么我......
  • 第一次踏足C语言 - 2022.12.16
     C语言源于B语言,B语言即BasicCombinedProgrammingLanguage(BCPL),1970年美国贝尔实验室的DennisRitch和KenThomepson在B语言的基础上设计了一种新的语言,以BCPL的第......
  • RequestMappingHandlerMapping请求地址映射流程!
    上篇文章里,我们讲解了RequestMappingHandlerMapping请求地址映射的初始化流程,理解了@Controller和@RequestMapping是如何被加载到缓存中的。今天我们来进一步学习,在接收到......
  • pip配环境变量+pip安装requests
    1.为在终端的任意路径使用pip,需要配置环境变量:我的电脑->属性->高级系统设置->环境变量->Path->加入pip.exe在的路径C:\Users\lenovo\AppData\Local\Programs\Python\Pyth......
  • 2022CSP-S游记
    虽然距离2022CSP结束已经\(1\)个月多了,还是补一下啦。2022.09.18第一轮啦。进会议为什么还有小学生啊,而且那个小学生像是连J都没参加一直在问问题,好想给他个逼斗......
  • day03-功能实现02
    家居网购项目实现025.功能04-会员登录5.1需求分析/图解需求如图:输入用户名、密码后提交判断该用户是否存在如果存在,显示登录成功页面否则返回登录页面,要求重新登......
  • Python学习笔记--判断语句的延续
    ifelse语句示例:需要注意的是,if后面必须有条件,而else后面可以不需要判断条件案例:实现:ifelifelse语句多条件判断,if和elif后面必须有条件,else后面可以没有......
  • 台湾大学林轩田机器学习技法课程学习笔记2 -- Dual Support Vector Machine
    上节课我们主要介绍了线性支持向量机(LinearSupportVectorMachine)。LinearSVM的目标是找出最“胖”的分割线进行正负类的分离,方法是使用二次规划来求出分类线。本节课将......
  • 台湾大学林轩田机器学习技法课程学习笔记9 -- Decision Tree
    上节课我们主要介绍了AdaptiveBoosting。AdaBoost演算法通过调整每笔资料的权重,得到不同的hypotheses,然后将不同的hypothesis乘以不同的系数αα......
  • 台湾大学林轩田机器学习基石课程学习笔记13 -- Hazard of Overfitting
    上节课我们主要介绍了非线性分类模型,通过非线性变换,将非线性模型映射到另一个空间,转换为线性模型,再来进行分类,分析了非线性变换可能会使计算复杂度增加。本节课介绍这种模型......