ElasticSearch系列1

简介:ElasticSearch es是一个开源的高扩展的分布式全文检索引擎。它可以近乎实时的存储,检索数据;从而让全文搜索变得简单;
安装与启动:

官网:https://www.elastic.co/products/elasticsearch
下载 解压即已安装好 bin目录下执行启动命令即可 默认端口9200

安装ES的图形化界面插件

es不同于solr自带图形化界面,我们可以跳过安装ElasticSearch的head插件,完成图形化界面的效果;
下载head插件:https://github.com/mobz/elasticsearch-head.git
还需要安装node.js 原因 head是基于nodejs开发的 使用前需要启动nodejs服务
下载nodejs:https://nodejs.org/en/download/
node -v
再cmd控制台输入如下执行命令:npm install -g grunt-cli
进入elasticsearch-head-master目录启动head 再命令提示符下输入命令:
npm install
grant server
localhost:9100访问

在这里插入图片描述
概述:

elasticsearch是面向文档的,这意味着它可以存储整个对象或文档,然而它不仅仅是存储,还会索引
每个文档的内容使之可以被搜索。再Elasticsearch中,你可以对文档进行索引,搜索,排序,过滤

在这里插入图片描述
postman创建索引
在这里插入图片描述
使用postman设置mapping映射
在这里插入图片描述
删除索引库:
在这里插入图片描述
在这里插入图片描述
向索引库中添加文档

创建文档document
请求url:
POST localhost:9200/blog1(索引)/article(type)/1(文档id 相当于主键 不指定为自动生成)
请求体:
{
   "id":100,
   "title":ElasticSearch是基于Lucene的搜索服务器
   "content":它提供了一个分布式多用户的全文搜索引擎,基于Restful web接口,ElasticSearch是用Java开发的,并作为Apache的许可许可条款下的开放源代码发布,是当前流行的企业搜索引擎,设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
}

使用head向索引库中添加文档:

点击复合查询:url->post->请求体

删除文档删除:
postman

请求方式:delete
http://localhost:9200/blog(索引)/hello(type)/1(主键)
head中的复合查询功能也可以

修改文档

原理:先删除后添加
post:http://localhost/blog(索引)/hello(字段)/1(主键)
主键有就删除然后添加 没有就直接新增
{
  "id":1,
  "title":"新添加的文档1",
  "contnet":"新添加的文档的内容"
}

在这里插入图片描述
数据体
根据id查询文档:

请求方式:get
http://localhost:9200/blog(索引)/hello(字段)/1(主键)

根据关键词进行查询

请求方式:post
http://localhost:9200/blog(索引)/hello(字段)/_search
根据请求体查询
{
    "query":{
        "term":{
            "title":"修"
        }
    }
}

queryString 查询

请求方式:POST
localhost:9200/blog1/article/_search
请求体:
{
  "query":{
      "query_string":{
        "default_field":"title",#指定搜索域
        "query":"网约车顺风车平台"#会采取分词查询,比如"今天在修路",就会把文档中含有修的查出来
      }
  }
}

head中基本查询也可以 符合查询
在这里插入图片描述
IK分词器和ElasticSearch集成使用

1.上述查询存在问题分析
在进行字符串查询时,我们发现取搜索"搜索服务器""钢索"都可以搜索到数据
而进行词条查询时,我们搜索"搜索"却没有搜索到数据;
究其原因是ElasticSearch的标准分词器导致的,我们创建索引时,字段使用的标准分词器
请求方式get
localhost:9200/_analyze(进行分词)?analyzer(指定分词器)=standard(标准分词器)&text(要分析的文本)="aaaa"

ik分词器

IkAnalyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。特性如下:
1.采用了特有的正向迭代最细粒度切分算法,具有60万字/2.采用了多子处理分析模式,支持:英文字母(IP地址,Email,URL)、数字(日期,常用中文数量
词,科学计数法),中文词汇(姓名,地名处理)等词汇处理。
3.对中英联合支持支持不是很好,在这方面的处理比较麻烦,需要在做一次查询,同时是支持个人词条的优化的词典存储,更小的内存占用。
4.支持用户词典扩展定义。
5.针对Lucnece全文检索优化的查询分析器KQueryParser;采用歧义分析算法优化查询关键字的搜索排
列组合,能极大的提高Lucence检索的命中率

ElasticSearch集成IK分词器

IK分词器安装
下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases
解压放到elasticsearch/plugins/目录下去 启动elasticsearch 即可
能正常启动及说明成功
IK提供了两种分词算法
ik_smart最少切分:
localhost:9200/_analyze(进行分词)?analyzer(指定分词器)=ik_smart&text(要分析的文本)="我是程序员" 会拆分在 我,是,程序员;
ik_max_word最细粒度划分:
localhost:9200/_analyze(进行分词)?analyzer(指定分词器)=ik_max_word&text(要分析的文本)="我是程序员" 会拆分在 我,是,程序员,程序,员;

集群:
在这里插入图片描述
搭建

准备三台elasticsearch服务器
修改每台服务器配置
解压压缩包 删除data目录存放索引库
修改elasticsearch-cluster\node*]\config\elasticsearch.yml配置文件
node1节点:
http:cors.enabled: true
http.cors.allow-orgin: "*"
#集群名称,保证唯一
cluster.name: my-elasticsearch
#节点名称:名称不一样
node.name: node-1
#必须为本机的ip地址
network.host: 127.0.0.1
#服务端口号,在同一机器必须不一样 http服务
http.port: 9201
#集群间通信端口号,在同一机器下必须不一样 tcp服务
transport.tcp.port: 9301
#设置集群自动发现机器ip集合
discovery.zen.ping.unicast.hosts ["127.0.0.1:9301","127.0.0.1:9302","127.0.0.1:9303"]
node2:
http:cors.enabled: true
http.cors.allow-orgin: "*"
#集群名称,保证唯一
cluster.name: my-elasticsearch
#节点名称:名称不一样
node.name: node-2
#必须为本机的ip地址
network.host: 127.0.0.1
#服务端口号,在同一机器必须不一样 http服务
http.port: 9202
#集群间通信端口号,在同一机器下必须不一样 tcp服务
transport.tcp.port: 9302
#设置集群自动发现机器ip集合
discovery.zen.ping.unicast.hosts ["127.0.0.1:9301","127.0.0.1:9302","127.0.0.1:9303"]
node3:
http:cors.enabled: true
http.cors.allow-orgin: "*"
#集群名称,保证唯一
cluster.name: my-elasticsearch
#节点名称:名称不一样
node.name: node-3
#必须为本机的ip地址
network.host: 127.0.0.1
#服务端口号,在同一机器必须不一样 http服务
http.port: 9203
#集群间通信端口号,在同一机器下必须不一样 tcp服务
transport.tcp.port: 9303
#设置集群自动发现机器ip集合
discovery.zen.ping.unicast.hosts ["127.0.0.1:9301","127.0.0.1:9302","127.0.0.1:9303"]
分别启动三个节点
head连接其中任意一个节点即可

集群环境下创建索引
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值