希望给同样遇见es的你带来帮助,也希望彼此有更多的讨论
版本选择6.4.3
1-安装
2-索引的创建
ElasticSearch 6.x 安装
- 安装ElasticSearch
解压:tar -xzvf elasticsearch-6.4.3.tar.gz
添加非root用户(启动中遇见其他权限问题,只要修改权限为elasticsearch用户就可以):
groupadd elasticsearch
useradd elasticsearch -g elasticsearch
chown -R elasticsearch:elasticsearch elasticsearch-6.4.3
su elasticsearch 启动:sh ./bin/elasticsearch 后台启动:sh ./bin/elasticsearch -d
启动的问题:(max file descriptors [4096] for elasticsearch process is too low......)
vi /etc/security/limits.conf 新增
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
修改配置文件sysctl.conf
vi /etc/sysctl.conf
添加下面配置:
vm.max_map_count=655360
并执行命令:
sysctl -p
访问 http://192.168.76.139:9200/
集群的安装模式也很简单,后期会升级为集群,也会介绍一些细节,暂时我们先使用单节点来进行我们的使用
- 安装ik分词器
ik分词可以更好的支持中文分词
下载ik
create plugin folder cd your-es-root/plugins/ && mkdir ik
unzip plugin to folder your-es-root/plugins/ik
安装完成重新启动:
可以看到
[bcfWDb7] loaded plugin [analysis-ik]
- 安装kibana
我们选用kibana作为测试工具
解压: tar -xzvf kibana-6.4.3.tar.gz
修改 kibana.yml:
server.port: 5601
server.host: "192.168.76.139"
server.name: "elasticsearch"
elasticsearch.url: "http://192.168.76.139:9200"
前台启动,不能关闭终端
./kibana
后台启动
nohup ./kibana &
- 安装head插件
head插件可以看到es集群的情况
依赖nodejs环境
git clone git://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head
npm install
npm run start
后台启动:nohup npm run start &
修改配置es配置: elasticsearch.yml
http.cors.enabled: true
http.cors.allow-origin: "*"
修改head插件配置:Gruntfile.js
connect: {
server: {
options: {
port: 9100,
base: '.',
keepalive: true,
hostname: '192.168.88.130'
}
}
}
- 到此,我们的准备工作已经完成。可以进入页面.
- http://192.168.88.130:9100/
- http://192.168.88.130:5601/
我们需要做什么?
假如我们想做一款app,每天会在里面新增一篇技术文章,并且会发布一个技术问题,
又或者影视介绍。
日积月累,里面的内容越来越多,想要快速找到想要的内容,迫使我们加入搜索引擎的功能 暂且叫它彗星
索引的设计
cometId 唯一标示
title 标题
author 原创者
editor 责任编辑
category 分类
description 描述
content 内容
createTime 创建时间
这里我还想添加一个字段,但是暂时不加,后面在重新索引数据的时候会进行新增。
一般来说,数据持久化会在数据库中,比如mysql。es是不支持事务。但是es在全文搜索方面很强大,
我们可以先从es搜索,把需要的字段返回,或者只返回一个id,然后通过id去数据库查询,去获取更多我们想要的内容。
去kibana 的 dev_tools 建立索引
PUT comet
{
"settings": {
"number_of_replicas": 0,
"number_of_shards": 5,
"index.store.type": "niofs",
"index.query.default_field": "title",
"index.unassigned.node_left.delayed_timeout": "5m"
},
"mappings": {
"comet": {
"dynamic": "strict",
"properties": {
"cometId": {
"type": "long"
},
"title": {
"type": "text",
"analyzer": "ik_smart",
"search_analyzer": "ik_smart"
},
"author": {
"type": "text",
"analyzer": "ik_smart",
"search_analyzer": "ik_smart"
},
"editor": {
"type": "keyword"
},
"category": {
"type": "keyword"
},
"description": {
"type": "text",
"analyzer": "ik_smart",
"search_analyzer": "ik_smart"
},
"content": {
"type": "text",
"analyzer": "ik_smart",
"search_analyzer": "ik_smart"
},
"createTime": {
"type": "date",
"format": "strict_date_optional_time||epoch_millis"
},
"suggest": {
"type": "completion"
}
}
}
}
}
返回:
{
"acknowledged": true,
"shards_acknowledged": true,
"index": "comet"
}
分词器采用ik
如果需要分词:text类型
如果不需要分词:keyword类型精确查询
suggest自动补全功能
- 准备工作完成,后续继续介绍 Java 客户端的使用,重新索引数据,别名的使用等常用的操作
点击查看更多内容
3人点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦