Elasticsearch,简称es,es是一个开源的高扩展的分布式全文检索引擎
通过解压Elasticsearch压缩包,解压即安装,打开bin目录的Elasticsearch.bat文件开启服务器
注意Elasticsearch服务器中的9300是TCP通讯端口,集群间和TCP客户端都执行该端口
9200是http协议的RESTful接口
在谷歌浏览器的开发者模式中 安装ES的图形化界面插件
Elasticsearch的核心概念:
Elasticsearch是面向文档(document)的,意味着它可以存储整个对象或文档
Elasticsearch -> Indexes(索引) -> Types(类型) -> Documents(文档) ->Fields(字段)
索引index
在Elasticsearch中存储数据的行为叫做索引(indexing),
一个索引由一个名字来标识(必须全部小写)
类型type
在一个索引中,可以定义一种或多种类型,相当于关系型数据库中的表
一个类型是你索引的一个逻辑上的分类或分区
字段Field
相当于数据表字段,对不同属性进行分类标识
映射mapping
是处理数据的方式和规则,针对于字段做的一些限制,字段的配置.
比如:某个字段的数据类型、默认值、分析器、是否被索引等等
文档document
document一个文档是一个可被索引的基础信息单元,
文档以JSON格式来表示,而JSON是一个到处存在的互联网数据交互格式
使用Postman工具进行RESTful接口访问
请求方法:<verb> 适当的HTTP方法:GET POST PUT HEAD DELETE
请求地址:<Protocol>://<Host>:<Port>/<Path>?<Query_String>
Protocol: http或者https
Host: Elasticsearch 集群中任意节点的主机名,或者用 localhost 代表本地机器上的节点。
Port: 运行 Elasticsearch HTTP服务的端口号,默认是 9200
Path: Path API的终端路径 (例如 _count将返回集群中文档数量)
Query_String: 任意可选的查询字符串参数(例如 ?pretty 将格式化地输出JSON返回值)
请求体:<Body> 一个JSON格式的请求体
创建索引
创建索引时配置映射
创建索引后配置映射
删除索引
创建文档
修改文档
querystring查询 (query_string是带分词器的查询)
字符串查询时,搜索"搜索服务器"和"大器"都可以搜索到数据
term查询(term,关键词匹配)
词条查询,搜索"搜索"却没有搜索到数据
总结: 创建索引库,设置mapping,新建type,删除索引 文档 CRUD
IK分词器和Elasticsearch集成
当我们创建索引的时候,字段使用的是标准分词器
IKAnalyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包
安装IK分词器:
将解压后的Elasticsearch分词器文件夹拷贝到Elasticsearch-5.6.8\plugins下,
并重命名文件夹为analysis-ik,重启Elasticsearch即可加载IK分词器
IK提供了两个分词算法 ik_smart 和 ik_max_word
ik_smart 为最少切分 ik_max_word为最细粒度划分
ik_smart 最少切分:
ik_max_word 最细切分:
创建索引时,使用分词器 ik_max_word
因为在创建索引的时候规定了分词器类型,
所以在创建文档时,会把内容根据规定的分词器进行分词,
然后再进行querystring查询,或者term查询
也是把传入的查询条件,根据规定的分词器进行分词,然后对比
集群的相关:
集群cluster: 一个集群就是由一个或多个节点组织在一起,
它们共同持有整个数据,并一起提供索引和搜索功能
一个集群由一个唯一的名字标识,这个名字默认就是“Elasticsearch”
节点node: 一个节点是集群中的一个服务,
作为集群的一部分,它存储数据,参与集群的索引和搜索功能
和集群类似,一个节点也是由一个名字来标识的