搜索框架ElasticSearch讲解(一)

本博客地址:https://security.blog.csdn.net/article/details/110343231

一、搜索框架Elasticsearch介绍

Elasticsearch是Elastic Stack核心的分布式搜索和分析引擎。它能为所有类型的数据提供实时搜索和分析。无论是结构化文本还是非结构化文本,Elasticsearch都能支持快速搜索的方式有效地对其进行存储和索引。它不仅可以进行简单的数据检索,还可以聚合信息来发现数据中的趋势和模式。

Elasticsearch是一个分布式文档存储,随着数据和查询量的增长,它的分布式特性使得部署可以随之无缝地增长。它不会将信息存储为列数据的行,而是存储已序列化为JSON文档的复杂数据结构。当集群中有多个Elasticsearch节点时,存储的文档将分布在集群中,并且可以从任何节点立即访问。

存储文档时,将在1秒钟内几乎实时地对其进行索引和完全搜索。Elasticsearch使用称为倒排索引的数据结构,该结构支持非常快速的全文本搜索。反向索引列出了出现在任何文档中的每个唯一单词,并标识了每个单词出现的所有文档。

二、部署安装(MacOS)

2.1、安装elasticsearch

1、执行安装命令

# 更新brew
brew update

# 搜索elasticsearch
brew search elasticsearch

# 安装elasticsearch
brew install elasticsearch

# 运行elasticsearch
brew services start elasticsearch

2、效果如下所示

命令行效果:
在这里插入图片描述

访问链接:http://127.0.0.1:9200

在这里插入图片描述

2.2、安装Kibana

Kibana是ES的一个配套工具,可以让用户在网页中与ES进行交互

1、执行安装命令

# 安装kibana
brew install kibana

# 启动Kibana
brew services start kibana

2、效果如下所示

# 本地浏览器访问
http://localhost:5601

# 查看集群健康状态
http://localhost:9200/_cat/health?v

# 查看索引列表
http://localhost:9200/_cat/indices?v

如下所示:
在这里插入图片描述

注意看 status字段,他有三个值含义分别如下:

green:一切都很好(集群功能齐全)
yellow:所有数据都可用,但尚未分配一些副本(群集功能齐全)
red:某些数据由于某种原因不可用(群集部分功能)

访问首页的效果为:
在这里插入图片描述

三、基本概念

1、索引(index):一个索引可以理解成一个关系数据库的库

2、类型(type):一种type就像一类表,比如user表、order表

3、映射(mapping):mapping定义了每个字段的类型等信息,相当于关系型数据库中的表结

4、文档(document):一个document相当于关系型数据库中的一⾏行记录

5、字段(field):相当于关系型数据库表的字段

6、集群(cluster):集群由一个或多个节点组成,一个集群有一个默认名称"elasticsearch"

7、节点(node):集群的节点,一台机器或者一个进程

8、分片和副本(node):副本是分片的副本。分⽚有主分片(primary Shard)和副本分片(replica Shard)之分。Index数据在物理上被分布在多个主分片中,每个主分片只存放部分数据。每个主分⽚可以有多个副本,叫副本分片,是主分片的复制。

9、核心数据类型

9.1、字符串(text):用于全文索引,该类型的字段将通过分词器进⾏分词。
字符串(keyword):不分词,只能搜索该字段的完整的值

9.2、数值型:long、integer、short、byte、double、float、half_float、scaled_float

9.3、数值型(boolean):boolean

9.4、二进制(binary):该类型的字段把值当做经过 base64 编码的字符串,默认不存储,且不可搜索

9.5、范围类型:范围类型表示值是一个范围,而不是⼀个具体的值。类型有:integer_range、float_range、long_range、double_range、date_range

9.6、日期(date):由于Json没有date类型,所以es通过识别字符串是否符合format定义的格式来判断是否为date类型。format默认为:strict_date_optional_time||epoch_millis,如:2022-01-01"、“2022/01/01 12:10:30” 这种字符串格式

四、索引基本操作

4.1、创建索引PUT请求

请求

http://localhost:9200/blablabla

响应

在这里插入图片描述

4.2、查看索引GET请求

请求

http://localhost:9200/blablabla

响应

在这里插入图片描述

4.3、批量获取索引GET请求

请求

http://localhost:9200/blablabla,malamala

响应

在这里插入图片描述

4.4、获取全部索引GET请求

请求

http://localhost:9200/_all

响应(太长了,不放json格式数据了)

在这里插入图片描述

4.5、使用_cat获取全部索引GET请求

请求

http://localhost:9200/_cat/indices?v

响应

在这里插入图片描述

4.6、关闭索引不删除POST请求

请求

http://localhost:9200/blablabla/_close

响应

在这里插入图片描述

4.7、打开索引POST请求

请求

http://localhost:9200/blablabla/_open

响应

在这里插入图片描述

4.8、删除索引DELETE请求

请求

http://localhost:9200/blablabla

响应

在这里插入图片描述

五、映射的介绍与使用

type:text 可分词
type:keyword 不可分词

5.1、创建Mapping PUT请求

请求

http://localhost:9200/blablabla/_mapping

请求体

{
	"properties":{	//字段的信息
		"name":{
			"type":"text"
		},
		"team_name":{
			"type":"text"
		},
		"position":{
			"type":"keyword"
		},
		"play_year":{
			"type":"keyword"
		},
		"jerse_no":{
			"type":"keyword"
		}
	}
}

响应

{
    "acknowledged": true
}

5.2、查看Mapping信息GET请求

请求

http://localhost:9200/blablabla/_mapping

响应

{
    "blablabla": {
        "mappings": {
            "properties": {
                "jerse_no": {
                    "type": "keyword"
                },
                "name": {
                    "type": "text"
                },
                "play_year": {
                    "type": "keyword"
                },
                "position": {
                    "type": "keyword"
                },
                "team_name": {
                    "type": "text"
                }
            }
        }
    }
}

5.3、批量获取Mapping信息GET请求

请求

http://localhost:9200/blablabla,malamala/_mapping

响应

{
    "blablabla": {
        "mappings": {
            "properties": {
                "jerse_no": {
                    "type": "keyword"
                },
                "name": {
                    "type": "text"
                },
                "play_year": {
                    "type": "keyword"
                },
                "position": {
                    "type": "keyword"
                },
                "team_name": {
                    "type": "text"
                }
            }
        }
    },
    "malamala": {
        "mappings": {}
    }
}

5.4、获取所有Mapping信息第一种方式GET请求

请求

http://localhost:9200/_mapping

响应

{
    "blablabla": {
        "mappings": {
            "properties": {
                "jerse_no": {
                    "type": "keyword"
                },
                "name": {
                    "type": "text"
                },
                "play_year": {
                    "type": "keyword"
                },
                "position": {
                    "type": "keyword"
                },
                "team_name": {
                    "type": "text"
                }
            }
        }
    },
    "malamala": {
        "mappings": {}
    }
}

5.5、获取所有Mapping信息第二种方式GET请求

请求

http://localhost:9200/_all/_mapping

响应

{
    "blablabla": {
        "mappings": {
            "properties": {
                "jerse_no": {
                    "type": "keyword"
                },
                "name": {
                    "type": "text"
                },
                "play_year": {
                    "type": "keyword"
                },
                "position": {
                    "type": "keyword"
                },
                "team_name": {
                    "type": "text"
                }
            }
        }
    },
    "malamala": {
        "mappings": {}
    }
}

5.6、增加Mapping字段POST请求

Mapping 只可增加字段不可修改字段

请求

http://localhost:9200/blablabla/_mapping

请求体

{
	"properties":{	
		"name":{
			"type":"text"
		},
		"team_name":{
			"type":"text"
		},
		"position":{
			"type":"keyword"
		},
		"play_year":{
			"type":"keyword"
		},
		"jerse_no":{
			"type":"keyword"
		},
		"country":{  // 增加的国家字段
			"type":"keyword"
		}
	}
}

响应

{
    "acknowledged": true
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

武天旭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值