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. 1.ElasticSearch介绍及基本概念

    一.ElasticSearch介绍 一个采用RESTful API标准的高扩展性的和高可用性的实时性分析的全文搜索工具 基于Lucene[开源的搜索引擎框架]构建 ElasticSearch是一个面向 ...

  2. elasticsearch介绍,安装,安装错误解决及相应插件安装

    一.elasticsearch介绍 1.简介(使用的是nosql,更新比mongodb慢): ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎, ...

  3. 【SpringBoot】搜索框架ElasticSearch介绍和整合SpringBoot

    ========================12章 搜索框架ElasticSearch介绍和整合SpringBoot ============================= 加入小D课堂技术交 ...

  4. Elasticsearch介绍及安装部署

    本节内容: Elasticsearch介绍 Elasticsearch集群安装部署 Elasticsearch优化 安装插件:中文分词器ik 一.Elasticsearch介绍 Elasticsear ...

  5. 批量搞机(二):分布式ELK平台、Elasticsearch介绍、Elasticsearch集群安装、ES 插件的安装与使用

    一.分布式ELK平台 ELK的介绍: ELK 是什么? Sina.饿了么.携程.华为.美团.freewheel.畅捷通 .新浪微博.大讲台.魅族.IBM...... 这些公司都在使用 ELK!ELK! ...

  6. Elasticsearch介绍和安装与使用

    转载:https://blog.csdn.net/weixin_42633131/article/details/82902812 1.Elasticsearch介绍和安装 1.1.简介1.1.1.E ...

  7. Elasticsearch介绍和安装

    Elasticsearch介绍和安装 软件包: 链接:https://pan.baidu.com/s/1O_C0JQGfF8sC_OtcCCLNoQ 提取码:3iai 1.1.简介 1.1.1.Ela ...

  8. ElasticSearch的基本原理与用法

    一.简介 ElasticSearch和Solr都是基于Lucene的搜索引擎,不过ElasticSearch天生支持分布式,而Solr是4.0版本后的SolrCloud才是分布式版本,Solr的分布式 ...

  9. ElasticSearch入门2: 基本用法

    基本用法:  一.索引创建 (启动集群和索引请看上一篇文章:http://www.cnblogs.com/liuxiaoming123/p/8081883.html) 1.打开浏览器,输入请求:htt ...

随机推荐

  1. 【黑马pink老师的H5/CSS课程】(一)基本介绍

    视频P4~P6 黑马程序员pink老师前端入门教程,零基础必看的h5(html5)+css3+移动 1.网页 1.1 什么是网页 网站是网页的集合,网页是构成网站的基本元素,常用html格式文件 1. ...

  2. SpringCloudAlibaba分布式流量控制组件Sentinel实战与源码分析-中

    实战示例 控制台初体验 Sentinel的控制台启动后,控制台页面的内容数据都是空的,接下来我们来逐步操作演示结合控制台的使用,在上一节也已说明整合SpringCloud Alibaba第一步先加入s ...

  3. SQL SERVER 算法面试题,自己再插入数据时,本想一次性复制10条数据,结果变成了1024条。产生一个算法bug,最后记录一下

  4. 用户数据交互 Scanner

    # 用户交互 Scanner ``` java package study5ran2yl.study; import java.util.Scanner; public class demo09 { ...

  5. VIM编辑器的宏操作

    这两天看到一个小练习,要求如下: 在GVIM下,将下面这张图的内容 改成下面这样 并且指出,要用批量操作的方式,不能一行一行的键入 其实第一反应是利用正则表达式来操作,但是让用正则表达式以外的操作方式 ...

  6. 【一本通提高博弈论】[ZJOI2009]取石子游戏

    [ZJOI2009]取石子游戏 题目描述 在研究过 Nim 游戏及各种变种之后,Orez 又发现了一种全新的取石子游戏,这个游戏是这样的: 有 n n n 堆石子,将这 n n n 堆石子摆成一排.游 ...

  7. python使用技巧

    当存在一个列表你需要将列表中的元素转为对应字典时,如何操作? 例如将["a", 1]变成{"a": 1} data = ["a", 1] d ...

  8. 基于阿里云直播实现视频推流(ffmpeg)/拉流(Django2.0)以及在线视频直播播放(支持http/https)功能

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_146 由于5g网络的光速推广,视频业务又被推上了风口浪尖,在2019年初我们还在谈论照片,短视频等关键字,而进入2020年,我们津 ...

  9. Camera类定义和实现

    类声明: #pragma once #ifndef __CAMERA_HEADER__ #define __CAMERA_HEADER__ #include "../utilities/ge ...

  10. 重构、插件化、性能提升 20 倍,Apache DolphinScheduler 2.0 alpha 发布亮点太多!

    点击上方 蓝字关注我们 社区的小伙伴们,好消息!经过 100 多位社区贡献者近 10 个月的共同努力,我们很高兴地宣布 Apache DolphinScheduler 2.0 alpha 发布.这是 ...