Elaticsearch,简称为es, es是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本 身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。es也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得 简单。
0一些概念 1 启动 1.1启动elasticsearch 1.2启动elasticsearch的图形化界面 2操作(使用postman)以下是使用postman工具进行es的操作练习,也可以在VScode中安装Elasticsearch for VScode插件,使用VSCode进行操作
2.1新建索引
指定索引的映射、指定字段的数据类型和分词器
- text—一需要分词、也就是需要字段能够被分词检索
- keyword—―不需要分词、keyword字段是可以被Elasticssearch sQL进行聚合分析。
- 分词器:对中文进行分词(重要),分词器直接影响检索的效果
我们可以在创建索引时设置mapping信息,当然也可以先创建索引然后再设置mapping。
2.3删除 2.4 创建document 修改文档 删除文档 2.5查询文档 2.5.1查询文档-根据id查询GET localhost:9200/test_02/hello/1
2.5.2查询文档-querystring查询-字符串查询这里面存在问题,后续解释
2.5.3查询文档-term查询-词条查询
在进行字符串查询时,我们发现去搜索"搜索服务器"和"钢索"都可以搜索到数据;
而在进行词条查询时,我们搜索"搜索"却没有搜索到数据;
究其原因是ElasticSearch的标准分词器导致的,当我们创建索引时,字段使用的是标准分词器。
标准分词器的效果不是很满足要求
这样的话就需要对中文支持良好的分析器的支持,支持中文分词的分词器有很多,word分词器、庖丁解牛、盘古 分词、Ansj分词等,
但我们常用的还是下面要介绍的IK分词器。
需要先安装,然后重启elasticsearch
IK提供了两个分词算法ik_smart 和 ik_max_word 其中 ik_smart 为最少切分,ik_max_word为最细粒度划分
3.1ik_smart 最少切分 3.2 ik_max_word 最细粒度划分 4ElasticSearch集群方式:多台主机或者一台主机模拟多个结点
4.1 一些概念分片与复制
防止一些服务器挂掉
这就相当于创建好的一个结点,我们可以复制多份,也可以重新创建
注意,复制多份时,data目录不能有数据,应该先把data目录删除
实际上,data中存的就是索引库
修改elasticsearch-clusternode*configelasticsearch.yml配置文件
node1节点:
#节点1的配置信息: #集群名称,保证唯一 cluster.name: my‐elasticsearch #节点名称,必须不一样 node.name: node‐1 #必须为本机的ip地址 network.host: 127.0.0.1 #服务端口号,在同一机器下必须不一样,默认端口号是9200 http.port: 9200 #集群间通信端口号,在同一机器下必须不一样 transport.tcp.port: 9300 #设置集群自动发现机器ip集合 discovery.zen.ping.unicast.hosts: ["127.0.0.1:9300","127.0.0.1:9301","127.0.0.1:9302"]
node2节点:
#节点2的配置信息: #集群名称,保证唯一 cluster.name: my‐elasticsearch #节点名称,必须不一样 node.name: node‐2 #必须为本机的ip地址 network.host: 127.0.0.1 #服务端口号,在同一机器下必须不一样 http.port: 9201 #集群间通信端口号,在同一机器下必须不一样 transport.tcp.port: 9301 #设置集群自动发现机器ip集合 discovery.zen.ping.unicast.hosts: ["127.0.0.1:9300","127.0.0.1:9301","127.0.0.1:9302"]
node3节点:
#节点3的配置信息: #集群名称,保证唯一 cluster.name: my‐elasticsearch #节点名称,必须不一样 node.name: node‐3 #必须为本机的ip地址 network.host: 127.0.0.1 #服务端口号,在同一机器下必须不一样 http.port: 9202 #集群间通信端口号,在同一机器下必须不一样 transport.tcp.port: 9302 #设置集群自动发现机器ip集合 discovery.zen.ping.unicast.hosts: ["127.0.0.1:9300","127.0.0.1:9301","127.0.0.1:9302"]
默认端口号是9200,同一集群下的集群名称应该是一样的
因为同一台主机的ip地址是一样的,所以应该保证端口号是不一样的
接着,启动各个节点服务器 双击elasticsearch-clusternode*binelasticsearch.bat
5ElasticSearch编程操作 5.1 创建工程,导入坐标高亮显示代码实现
6 Spring Data ElasticSearch 使用


