架构师系列-搜索引擎ElasticSearch(一)

这篇具有很好参考价值的文章主要介绍了架构师系列-搜索引擎ElasticSearch(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

ES单机部署

下载es: 

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.5-
linux-x86_64.tar.gz
tar -zvxf elasticsearch-7.17.5-linux-x86_64.tar.gz

配置 Elasticsearch

关闭防火墙

systemctl status firewalld.service
systemctl stop firewalld.service
systemctl disable firewalld.service

配置elasticsearch.yml
 

#设置允许访问地址,配置位0.0.0.0允许任意主机访问
- #network.host: 192.168.0.1
+ network.host: 0.0.0.0
# 配置集群
# node.name: node-1
+ node.name: node-1
- #discovery.seed_hosts: ["host1", "host2"]
discovery.seed_hosts: ["node-1"]
- #cluster.initial_master_nodes: ["node-1", "node-2"]
+ cluster.initial_master_nodes: ["node-1"]

修改Linux句柄数
 

# 查看当前最大句柄数
sysctl -a | grep vm.max_map_count

# 修改句柄数
vi /etc/sysctl.conf
+ vm.max_map_count=262144

# 临时生效
sysctl -w vm.max_map_count=262144

关闭swap

因为ES的数据大量都是常驻内存的,一旦使用了虚拟内存就会导致查询速度下降,一般需要关闭
swap,但是要保证有足够的内存
 

# 临时关闭
swapoff -a

# 永久关闭
vi /etc/fstab
注释掉swap的一行

架构师系列-搜索引擎ElasticSearch(一),搜索引擎,elasticsearch,java

修改最大线程数及创建ES用户

vi /etc/security/limits.conf
# 添加以下内容
* soft nofile 65536
* hard nofile 65536
* soft nproc 4096
* hard nproc 4096

# 重启服务
reboot

# es不能以root启动,创建用户
useradd elasticsearch
passwd elasticsearch

# 增加sudoers权限
vi /etc/sudoers
+ elasticsearch ALL=(ALL) ALL

# 给ES的安装目录进行授权
chown -R elasticsearch:elasticsearch elasticsearch-7.17.5

# jvm配置
vi jvm.options
+ -Xms4g
+ -Xmx4g

添加IK分词器

在github中下载对应版本的分词器
https://github.com/infinilabs/analysis-ik/releases

根据自己的ES版本选择相应版本的IK分词器,因为安装的ES是 7.17.5 ,所以也下载相应的IK分词

架构师系列-搜索引擎ElasticSearch(一),搜索引擎,elasticsearch,java

将下载的分词器复制到ES安装目录的 plugins 目录中并进行解压

mkdir ik && cd ik
unzip elasticsearch-analysis-ik-7.17.5.zip

# 启动
su elasticsearch
# 前台启动
sh bin/elasticsearch
# 后台启动
sh bin/elasticsearch -d

访问主机的9200端口

http://192.168.101.20:9200

 kibana安装

下载安装 Kibana  

wget https://artifacts.elastic.co/downloads/kibana/kibana-7.17.5-linuxx86_64.tar.gz
tar -zvxf kibana-7.17.5-linux-x86_64.tar.gz
mv kibana-7.17.5-linux-x86_64 kibana-7.17.5

# 配置kibana
vi config/kibana.yml
- #server.port: 5601
+ server.port: 5601
- #server.host: "localhost"
+ server.host: "0.0.0.0"
- #elasticsearch.hosts: ["http://localhost:9200"]
+ elasticsearch.hosts: ["http://localhost:9200"]

# 启动kibana
su elasticsearch
#前台运行
sh bin/kibana
#后台运行
nohup sh bin/kibana >/dev/null 2>&1 &

访问地址:http://192.168.101.20:5601

ES快速入门

索引管理

列出索引
 

GET /_cat/indices?v

架构师系列-搜索引擎ElasticSearch(一),搜索引擎,elasticsearch,java

创建索引

架构师系列-搜索引擎ElasticSearch(一),搜索引擎,elasticsearch,java

查看索引
 架构师系列-搜索引擎ElasticSearch(一),搜索引擎,elasticsearch,java

架构师系列-搜索引擎ElasticSearch(一),搜索引擎,elasticsearch,java 索引是否存在

 架构师系列-搜索引擎ElasticSearch(一),搜索引擎,elasticsearch,java

关闭索引
 

在一些业务场景,我们可能需要禁止掉某些索引的访问功能,但是又不想删除这个索引
架构师系列-搜索引擎ElasticSearch(一),搜索引擎,elasticsearch,java

删除索引 

架构师系列-搜索引擎ElasticSearch(一),搜索引擎,elasticsearch,java

 映射管理

映射的创建时基于索引的,你必须要先创建索引才能创建映射,es中的映射相当于传统数据库中
的表结构,数据存储的格式就是通过映射来规定的

创建映射
 

可以在创建索引时指定映射,其中 mappings.properties 为固定结构,指定创建映射属性

PUT customer
{
    "mappings": {
        "properties": {
            "name": {
                "type": "keyword"
            },
            "age": {
                "type": "integer"
            }
        }
    }
}

查看映射
架构师系列-搜索引擎ElasticSearch(一),搜索引擎,elasticsearch,java
 

文档管理 

 创建文档(业务ID)

文档可以类比为关系型数据库中的表数据,添加的数据格式为 JSON 格式
注意需要在索引后面添加 _doc ,表示操作文档
在未指定id生成情况,每执行一次post将生成一个新文档
如果index不存在,将会默认创建
新增文档,自动生成文档id,并且如果如果添加文档的索引不存在时会自动创建索引

post customer/_doc/1
{
"name" : "张三",
"age" : 15
}

# 返回结果
{
    "_index" : "customer", #所属索引
    "_type" : "_doc", #所属mapping type
    "_id" : "1", #文档id
    "_version" : 1, #文档版本
    "result" : "created", #文档创建成功
    "_shards" : {
        "total" : 2, #所在分片有两个分片
        "successful" : 1, #只有一个副本成功写入,可能节点机器只有一台
        "failed" : 0 #失败副本数
    },
    "_seq_no" : 0, #第几次操作该文档
    "_primary_term" : 1 #词项数

}

 创建文档(自动ID)

自动生成的ID是一个不会重复的随机数,使用GUID算法,可以保证在分布式环境下,不同节点同一时间创建的 _id 一定是不冲突的
 

post customer/_doc
{
"name" : "李四",
"age" : 50
}

 更新文档

 全量更新

和新增文档一样,输入相同的 URL 地址请求,如果请求体变化,会将原有的数据内容覆盖

post customer/_doc/1
{
"name" : "张三",
"age" : 50
}
 增量更新

通过指定 _doc 方式默认是全量更新,如果需要更新指定字段则需要将 _doc 改为 _update ,请求
内容需要增加doc表示,原始 {“key”: value} ,更新 {“doc”: {“key”: value}}

post customer/_update/1
{
    "doc": {
        "age" : 55
    }
}

 查询文档

HEAD customer/_doc/1 #查看是否存储,返回200表示已存储
GET customer/_doc/1 #返回源数据的查询
GET customer/_doc/1?_source=false # 有时候只是查询,不需要具体的源文档字段
GET customer/_search # 查询所有

 删除文档

DELETE customer/_doc/1 #指定文档id进行删除
# 根据查询条件删除,会先查询然后在删除,可能耗时会比较长
post customer/_delete_by_query
{
    "query": {
        "match": {
            "age": "15"
        }
    }
}

 中文分词器

IKAnalyzer已经推出了3个大版本,在 2012 版本中,IK 实现了简单
的分词歧义排除算法,标志着 IK 分词器从单纯的词典分词向模拟语义分词衍化
IK提供了两个分词算法: ik_smart:最少切分, ik_max_word:最细粒度划分

ik_smart  

原始内容:传智教育的教学质量是杠杠的

GET _analyze
{
"analyzer": "ik_smart",
"text": "传智教育的教学质量是杠杠的"
}

 架构师系列-搜索引擎ElasticSearch(一),搜索引擎,elasticsearch,java

 ik_max_word

GET _analyze
{
"analyzer": "ik_max_word",
"text": "传智教育的教学质量是杠杠的"
}

自定义词库

我们输入“传智教育的教学质量是杠杠的”,但是分词器会把“传智教育”进行拆开,分为了“传”,
“智”,“教育”,但我们希望的是“传智教育”可以不被拆开。


 进入elasticsearch目录 plugins/ik/config 中,创建我们自己的字典文件 yixin.dic ,并添加
内容:

cd plugins/ik/config
echo "传智教育" > custom.dic

# 进入我们的elasticsearch目录 : plugins/ik/config ,打开 IKAnalyzer.cfg.xml 文件,进行
如下配置:
vi IKAnalyzer.cfg.xml
#增加如下内容
<entry key="ext_dict">custom.dic</entry>

 重启ElasticSearch,再次使用kibana测试.文章来源地址https://www.toymoban.com/news/detail-850738.html

GET _analyze
{
"analyzer": "ik_max_word",
"text": "传智教育的教学质量是杠杠的"
}

到了这里,关于架构师系列-搜索引擎ElasticSearch(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 552、Elasticsearch详细入门教程系列 -【分布式全文搜索引擎 Elasticsearch(三)】 2023.05.19

    1.1 简单介绍 之前是对ES中的创建/查看/删除索引、创建定义映射、创建/查看/修改/删除文档的这些操作有了一定的了解认识,但是是通过Postman + JSON串的方法来实现的 那么之后仍然是对ES中的索引、映射、文档进行操作,只是方法换成了Java API。 1.2 案例详情 首先需要创建一个

    2024年02月08日
    浏览(52)
  • Java SpringBoot API 实现ES(Elasticsearch)搜索引擎的一系列操作(超详细)(模拟数据库操作)

    小编使用的是elasticsearch-7.3.2 基础说明: 启动:进入elasticsearch-7.3.2/bin目录,双击elasticsearch.bat进行启动,当出现一下界面说明,启动成功。也可以访问http://localhost:9200/ 启动ES管理:进入elasticsearch-head-master文件夹,然后进入cmd命令界面,输入npm run start 即可启动。访问http

    2024年02月04日
    浏览(53)
  • 分布式搜索引擎ElasticSearch——深入elasticSearch

    聚合的分类 DSL实现Bucket聚合 DSL实现Metric聚合 RestAPI实现聚合 https://github.com/medcl/elasticsearch-analysis-pinyin DSL实现自动补全查询 Completion Suggester 修改酒店索引库数据结构 RestAPI实现自动补全查询 实现酒店搜索页面输入框的自动补全 数据同步思路分析 利用MQ实现mysql与elasticsearch数

    2024年01月17日
    浏览(46)
  • Elasticsearch 搜索引擎

    一、创建索引库 *put* *http://localhost:9200/* *索引库名称* PUT http://localhost:9200/xc_course number_of_shards:设置分片的数量,在集群中通常设置多个分片,表示一个索引库将拆分成多片分别存储不同 的结点,提高了ES的处理能力和高可用性,入门程序使用单机环境,这里设置为1。 numb

    2024年02月01日
    浏览(44)
  • Elasticsearch全文搜索引擎

    Elasticsearch全文搜索引擎 Elasticsearch简介 windows平台下安装ES 学习ES的预备知识 ES索引操作 ES文档操作 ES高级查询 Golang操作ES起步 Golang操作ES索引 Golang操作ES文档 Golang ES高级查询 Gin集成ES

    2024年02月09日
    浏览(46)
  • 分布式搜索引擎ElasticSearch——搜索功能

    DSL查询分类 DSL官方文档 全文检索查询 精确查询 地理查询 复合查询 Function Score Query function score query Boolean Query 排序 分页 官方文档 高亮 快速入门 match,term,range,bool查询 排序和分页 高亮显示 就是在前面抽取的解析代码中进一步添加关于高亮的解析部分,因为highlight和so

    2024年02月01日
    浏览(53)
  • 分布式搜索引擎——elasticsearch搜索功能

    Elasticsearch提供了基于JSON的DSL (Domain Specific Language)来定义查询。常见的查询类型包括: 查询所有:查询出所有数据,一般测试用。例如:match_all 全文检索(full text)查询:利用分词器对用户输入内容分词,然后去倒排索引库中匹配。例如: match_query multi_match_query 精确查询:根据精确词条

    2024年02月05日
    浏览(64)
  • 【ElasticSearch】深入了解 ElasticSearch:开源搜索引擎的力量

    在信息时代,数据的增长速度之快让我们迅速感受到了信息爆炸的挑战。在这个背景下,搜索引擎成为了我们处理海量数据的得力工具之一。而 ElasticSearch 作为一款强大的开源搜索引擎,不仅能够高效地存储和检索数据,还在日志分析、实时监控等领域展现了其卓越的性能。

    2024年02月08日
    浏览(58)
  • 全文搜索引擎 Elasticsearch详解

    Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,适用于包括文本、数字、地理空间、结构化和非结构化数据等在内的所有类型的数据。Elasticsearch 在 Apache Lucene 的基础上开发而成,由 Elasticsearch N.V.(即现在的 Elastic)于 2010 年首次发布。Elasticsearch 以其简单的

    2023年04月22日
    浏览(41)
  • Elasticsearch:什么是搜索引擎?

    搜索引擎是一种软件程序或系统,旨在帮助用户查找存储在互联网或特定数据库中的信息。 搜索引擎的工作原理是对各种来源的内容进行索引和编目,然后根据用户的搜索查询向用户提供相关结果列表。 搜索引擎对于希望快速有效地查找特定信息的用户来说是有用的工具。

    2024年02月21日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包