ElasticSearch介绍和基本用法(一)
ElasticSearch
引言
1.在海量数据中执行搜索功能时,如果使用MySQL, 效率太低。
2.如果关键字输入的不准确,一样可以搜索到想要的数据。
3.将搜索关键字,以红色的字体展示。
介绍:
es是一个使用java语言并且基于Lucene编写的搜索引擎框架,提供了分布式的全文搜索功能,提供了一个统一的基于restful风格的web接口。
- haystack:全文检索的框架,支持whoosh、solr、Xapian、Elasticsearc四种全文检索引擎。
- whoosh:纯Python编写的全文搜索引擎,虽然性能比不上sphinx、xapian、Elasticsearc等,但是无二进制包,程序不会莫名其妙的崩溃,对于小型的站点,whoosh已经足够使用,点击查看whoosh文档。
- jieba:一款免费的中文分词包,如果觉得不好用可以使用一些收费产品。
分布式:突出横向扩展能力。
全文检索:将一段词语进行分词,并且将分出的单个词语统一的放到一个分词库中,在搜索时,根据关键字去分词库中检索,找到匹配内容。(倒排索引)
端口:9200
倒排索引
1.将存放的数据,以一定的方式进行分词,并且将分词的数据存放到一个单独的分词库中
2.当用户去查询数据时,会将用户的查询关键字进行分词
3.然后去分词库中匹配内容,最终得到数据的id标识
4.根据id标识去存放数据的位置拉取到指定的数据
不会直接去存放数据的数据库检索而是先去分词库去检索,再返回数据库的数据
1.es服务中可以创建多个索引。
2.es服务每一个索引默认有5个分片。
3.每一个分片都会存在至少一个备份分片。
4.从分片默认是不会帮助检索数据,当es检索压力特别大时,备份分片才会帮助检索数据。
5.备份的分片必须放在不同的服务器中。
分片可以提高检索效率,分片1会备份分片2中的数据,防止分片2挂掉
kibana
kibana端口:5601
查看索引的文档信息
1.配置索引,点击进行下一步
2.点击Discover,进行查看
##启动es和kibana
cd /Users/yutang/docker_es
docker-compose up
1.索引基本操作
1.1 创建一个索引
#创建一个person索引
PUT /person
{
"settings": {
"number_of_shards": 5, //分片数
"number_of_replicas": 1 //备份数
}
}
1.2 查看索引信息
#查看索引
GET /person
1.3 删除索引
#删除索引
DELETE /person
1.4 ES中Field可以指定的类型
官网地址核心数据类型地址:https://www.elastic.co/guide/en/elasticsearch/reference/6.5/mapping-types.html
字符串String:
text:一般用于全文检索。将当前的field进行分词
keyword: 当前的Field不可被分词
数值类型Numeric:
long,
integer,
short,
byte,
double,
float,
half_float,
scaled_float
时间类型Data:
date,可以指定具体的格式
布尔类型Boolean:
boolean
二进制类型Binary:
binary
范围类型Range:
integer_range, float_range, long_range, double_range, date_range
经纬度类型:
geo_point:用来存储经纬度
ip类型:
ip:可以存储ipv4或者ipv6
1.5 创建索引并指定数据结构
以创建小说为例子
PUT /book
{
"settings": {
//备份数
"number_of_replicas": 1,
//分片数
"number_of_shards": 5
},
//指定具体的数据结构
"mappings": {
//指定类型 Type
"novel": {
//文件存储的Field属性名
"properties": {
"name": {
"type": "text",
//指定分词器的名称
"analyzer": "ik_max_word",
//指定当前的Field可以作为查询的条件,默认是true
"index": true
},
"authoor": {
"type": "keyword"
},
// 字数
"count": {
"type": "long"
},
"onSale": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
},
"descr": {
"type": "text"
}
}
}
}
}
1.6 文档的操作
文档在ES服务中的唯一标志,_index, _type, _id 三个内容为组合,来锁定一个文档,操作抑或是修改
PUT要指定id,不然会失败;POST则不用
1.6.1 新建文档
- 自动生成id
POST /book/novel
{
"name": "西游记",
"authoor": "刘明",
"onSale": "2020-12-11",
"count": 100000,
"descr": "哈哈哈哈哈哈"
}
- 手动指定ID(更推荐)
PUT /book/novel/1
{
"name": "三国演义",
"authoor": "小明",
"onSale": "2020-12-11",
"count": 100000,
"descr": "哈哈哈哈哈哈"
}
1.6.2 修改文档
覆盖式修改
# 直接覆盖id为1的数据
PUT /book/novel/1
{
"name": "三国演义",
"authoor": "小明",
"onsale": "2020-12-11"
}
- doc修改方式(更推荐)
POST /book/novel/1/_update
{
"doc": {
"name": "极品家丁"
}
}
#先锁定文档,_update 修改需要的字段即可
1.6.3 删除文档
删库
DELETE /book/novel/1
1.6.4 查询结果过滤
_source 过滤显示指定字段
POST /book/novel/_search
{
"query": {
"match_all": {}
},
"_source": ["name", "authoor"]
}
1.6.5 排序
sort 按照指定顺序返回,此时的_score是nul
POST /book/novel/_search
{
"query": {
"match_all": {}
},
"sort": [
{
"count": {
"order": "desc" //降序
}
}
]
}
ElasticSearch介绍和基本用法(一)的更多相关文章
- 1.ElasticSearch介绍及基本概念
一.ElasticSearch介绍 一个采用RESTful API标准的高扩展性的和高可用性的实时性分析的全文搜索工具 基于Lucene[开源的搜索引擎框架]构建 ElasticSearch是一个面向 ...
- elasticsearch介绍,安装,安装错误解决及相应插件安装
一.elasticsearch介绍 1.简介(使用的是nosql,更新比mongodb慢): ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎, ...
- 【SpringBoot】搜索框架ElasticSearch介绍和整合SpringBoot
========================12章 搜索框架ElasticSearch介绍和整合SpringBoot ============================= 加入小D课堂技术交 ...
- Elasticsearch介绍及安装部署
本节内容: Elasticsearch介绍 Elasticsearch集群安装部署 Elasticsearch优化 安装插件:中文分词器ik 一.Elasticsearch介绍 Elasticsear ...
- 批量搞机(二):分布式ELK平台、Elasticsearch介绍、Elasticsearch集群安装、ES 插件的安装与使用
一.分布式ELK平台 ELK的介绍: ELK 是什么? Sina.饿了么.携程.华为.美团.freewheel.畅捷通 .新浪微博.大讲台.魅族.IBM...... 这些公司都在使用 ELK!ELK! ...
- Elasticsearch介绍和安装与使用
转载:https://blog.csdn.net/weixin_42633131/article/details/82902812 1.Elasticsearch介绍和安装 1.1.简介1.1.1.E ...
- Elasticsearch介绍和安装
Elasticsearch介绍和安装 软件包: 链接:https://pan.baidu.com/s/1O_C0JQGfF8sC_OtcCCLNoQ 提取码:3iai 1.1.简介 1.1.1.Ela ...
- ElasticSearch的基本原理与用法
一.简介 ElasticSearch和Solr都是基于Lucene的搜索引擎,不过ElasticSearch天生支持分布式,而Solr是4.0版本后的SolrCloud才是分布式版本,Solr的分布式 ...
- ElasticSearch入门2: 基本用法
基本用法: 一.索引创建 (启动集群和索引请看上一篇文章:http://www.cnblogs.com/liuxiaoming123/p/8081883.html) 1.打开浏览器,输入请求:htt ...
随机推荐
- java中JVM和JMM之间的区别
一 jvm结构 jvm的内部结构如下图所示,这张图很清楚形象的描绘了整个JVM的内部结构,以及各个部分之间的交互和作用. 1 Class Loader(类加载器)就是将Class文件加载到内存,再说的 ...
- 毕业论文着急了?Python疫情数据分析,并做数据可视化展示
采集流程 一..明确需求 采集/确诊人数/新增人数 二.代码流程 四大步骤 发送请求 获取数据 网页源代码 解析数据 筛选一些我想用的数据 保存数据 保存成表格 做数据可视化分析 开始代码 1. 发送 ...
- 2022省选前联考 AVL树/平衡树
题目描述 pks 得到了一棵 \(N\) 个节点,权值为 \(1\sim N\) 的 \(AVL\) 树,他觉得这棵树太大了,于是他想要删掉一些节点使得最后剩下的树恰好有 \(K\) 个节点.如果 p ...
- Image-Text Matching
重要性和意义: Image-text matching has received a large amount of interest since it associates different mo ...
- API概述,使用步骤和Scanner概述及其API文档的使用
API概述 API(Application Programming Interface),应用程序编程接口.Java API是一本程序员的 字典 ,是JDK中提供给 我们使用的类的说明文档.这些类将底 ...
- IO流思维导图
IO思维导图总结 总览: 1.文件 <目标:File类的创建和删除的方法 > public boolean createNewFile() :当且仅当具有该名称的文件尚不存在时, 创建一个 ...
- CSDN 原力(声望,影响力) -- 设计草案
目标 CSDN 希望成为开发者学习,成长和成就的平台.我们已经有很多功能来支持开发者的职业成长了, 如何衡量成就呢?我们希望用 原力 (以前也叫 影响力,声望) 来体现用户的成就, 并希望用原力来帮助 ...
- 基于 Hexo 从零开始搭建个人博客(五)
阅读本篇前,请先阅读前几篇文章: 基于 Hexo 从零开始搭建个人博客(一) 基于 Hexo 从零开始搭建个人博客(二) 基于 Hexo 从零开始搭建个人博客(三) 基于 Hexo 从零开始搭建个人博 ...
- mybatis-plus时间字段自动填充
时间代码自动填充的2种方式 数据库方式 将数据库字段create_time和update_time设置CURRENT_TIMESTAMP,create_time字段后面不需要勾选更新,update_t ...
- prim最小生成树算法(堆优化)
prim算法原理和dijkstra算法差不多,依然不能处理负边 1 #include<bits/stdc++.h> 2 using namespace std; 3 struct edge ...