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 ...
随机推荐
- 基于InsightFace的高精度人脸识别,可直接对标虹软
一.InsightFace简介 InsightFace 是一个 2D/3D 人脸分析项目.InsightFace 的代码是在 MIT 许可下发布的. 对于 acadmic 和商业用途没有限制. 包含注 ...
- Apache:dbutils 开源JDBC工具类库
commons-dbutils jar:下载 package com.jdbc.tools; import org.apache.commons.dbutils.QueryRunner; import ...
- 贪吃蛇-JavaGUI实现
开发的大体思路 1.定义数据 2.画上面板(将数据进行初始化赋值) 3.监听事件 键盘监听 事件监听 游戏主界面代码 点击查看代码 package com.Tang.gui.snake; ...
- APISpace 空号检测API接口 免费好用
空号检测也称空号在线过滤,在线筛号,号码在线清洗.空号检测平台借助第五代大数据空号检测系统,为用户提供高精准的空号检测.号码过滤.号码筛选.号码清洗等众多号码检测功能,让用户快速准确的检测出活跃号.空 ...
- HMS Core图形图像技术展现最新功能和应用场景,加速构建数智生活
[2022年7月15日,杭州]HUAWEI Developer Day(华为开发者日,简称HDD)杭州站拉开帷幕.在数字经济不断发展的今天,开发者对图形图像的开发需求更加深入和多样化,从虚拟环境重构到 ...
- 输出以二叉树表示的算术表达式(严6.51)--------西工大noj
题解 这道题目说的很诡异,其实没有什么把括号补上....仅仅是先序读入,然后中序输出就行了 代码 #include <stdio.h> #include <stdlib.h> ...
- 【PMP学习笔记】第1章 PMP体系引论
一.什么是项目? 项目是为创造独特的产品.服务或成果而进行的临时性工作. 项目管理是把事办成的方法论,万物皆可项目. 项目的特性 临时性:有明确的"起"和"止" ...
- nginx反向代理缓存配置
关于nginx的反向代理缓存配置,用的最多的就是CDN公司,目前CDN公司用纯nginx做缓存的已经很少了,基本都用tnginx(阿里的).openresty:但是这两款软件都是基于nignx开发的, ...
- PHP正则替换函数收集
preg_replace() $msg = preg_replace("/<style>.+<\/style>/is", "", $ms ...
- 转:mysql保留关键字
原文链接:http://www.tuicool.com/articles/Brauq2e 从网上找了一个mysql的保留字列表,仅供参考. ADD ALL ALTER ANALYZE AND AS A ...