如何开发自己的搜索帝国之Elasticsearch
搜索引擎是什么?
Elasticsearch是什么?
ES基础架构

ElasticSearch vs Solr 总结
(1)二者安装都很简单。
(2)Solr 利用 Zookeeper 进行分布式管理,而 Elasticsearch 自身带有分布式协调管理功能。
(3)Solr 支持更多格式的数据,比如JSON、XML、CSV,而 Elasticsearch 仅支持json文件格式。
(4)Solr 官方提供的功能更多,而 Elasticsearch 本身更注重于核心功能,高级功能多有第三方插件提供
(5)Solr 在传统的搜索应用中表现好于 Elasticsearch,但在处理实时搜索应用时效率明显低于 Elasticsearch。
(6)Solr 是传统搜索应用的有力解决方案,但 Elasticsearch 更适用于新兴的实时搜索应用。
三台机器做集群:192.168.80.30、192.168.80.32、192.168.80.33
环境
CentOS7.0
Java1.8
下载
下载地址:https://www.elastic.co/products/elasticsearch
下载后上传到CentOS中的/usr/local/ 文件夹中,并解压到当前文件中重命名为elasticsearch530 /usr/local/elasticsearch530
tar -zxvf elasticsearch-5.3.0.tar.gz
创建 elsearch运行账户和组
groupadd elsearch #添加elsearch组
useradd -g elsearch elsearch -s /bin/false
更改elasticsearch文件夹及内部文件的所属用户及组为elsearch:elsearch
chown -R elsearch:elsearch elasticsearch530
配置参数
cluster.name: es-application #这是集群名字,我们 起名为 es-application。es启动后会将具有相同集群名字的节点放到一个集群下。
node.name: "es-node1" #节点名字。
covery.zen.minimum_master_nodes: 1 #指定集群中的节点中有几个有master资格的节点。对于大集群可以写3个以上。
discovery.zen.ping.timeout: 40s #默认是3s,这是设置集群中自动发现其它节点时ping连接超时时间,为避免因为网络差而导致启动报错,我设成了40s。
discovery.zen.ping.multicast.enabled: false #设置是否打开多播发现节点,默认是true。
network.host: 0.0.0.0
http.port: 9200
node.master: true #节点从可作为选举为主节点
node.data: true #也用来存储数据,可作为负载器
discovery.zen.ping.unicast.hosts: ["192.168.80.32","192.168.80.33","192.168.80.30"] #discovery.zen.ping.unicast.hosts:["节点1的 ip","节点2 的ip","节点3的ip"] 指明集群中其它可能为master的节点ip,以防es启动后发现不了集群中的其他节点。第一对引号里是node1,默认端口是9300。第二个是 node2 ,在另外一台机器上。
node.name: "es-node2"和 node.name: "es-node3"
启动
su elsearch
cd /usr/local/elasticsearch530 目录
bin/elasticsearch -d #后台运行
此时启动服务会发现报错:max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
[root@H32 ~]# cat /etc/sysctl.conf | grep -v "vm.max_map_count" > /tmp/system_sysctl.conf
[root@H32 ~]# echo "vm.max_map_count=262144" >> /tmp/system_sysctl.conf
[root@H32 ~]# mv /tmp/system_sysctl.conf /etc/sysctl.conf
mv:是否覆盖"/etc/sysctl.conf"? y
[root@H32 ~]# cat /etc/sysctl.conf
# System default settings live in /usr/lib/sysctl.d/00-system.conf.
# To override those settings, enter new settings here, or in an /etc/sysctl.d/<name>.conf file
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
vm.max_map_count=262144
[root@H32 ~]# sysctl -p
vm.max_map_count = 262144
修改后再次启动,可通过下命令查看启动后是否有进程
ps -ef |grep elasticsearch
ES的安装就此完成,接下来安装Head插件来监控Elasticsearch
Elasticsearch Head插件
设置内核参数
fs.file-max=65536
vm.max_map_count=262144
设置资源参数
elsearch soft nofile 65536
elsearch hard nofile 65536 sysctl -p
# 增加新的参数,这样head插件可以访问es
http.cors.enabled: true
http.cors.allow-origin: "*"
在5.X版本中不支持直接安装head插件,需要启动一个服务
git clone git://github.com/mobz/elasticsearch-head.git
下载 elasticsearch-head 或者 git clone 到 /usr/local/elasticsearch-head
cd elasticsearch-head npm install
yum -y install xz
xz -d node*.tar.xz tar -xvf node*.tar
解压完node的安装文件后,需要配置下环境变量,编辑/etc/profile,添加
# set node environment
export NODE_HOME=/usr/local/node790
export PATH=$PATH:$NODE_HOME/bin
别忘记立即执行以下
[root@H32 node790]# echo $NODE_HOME
/usr/local/node790
[root@H32 node790]# node -v
[root@H32 node790]# npm -v
安装grunt
cd elasticsearch-head
npm install grunt-cli
npm install grunt --save-dev
[root@H32 elasticsearch-head]# grunt -version
grunt-cli v1.2.0
grunt v1.0.1
启动服务
/usr/local/elasticsearch-head/node_modules/grunt/bin/gruntserver
修改head源码
connect: { server: { options: { port: 9100, hostname: '*', base: '.', keepalive: true } } }
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://192.168.80.32:9200";
运行head
cd /usr/local/elasticsearch-head
grunt server -d
现在可以在此页面操作ES数据了,但这只是一个开始。
如何开发自己的搜索帝国之Elasticsearch的更多相关文章
- 如何开发自己的搜索帝国之ES图形化Kibana安装与使用
在如何开发自己的搜索帝国之Elasticsearch中已经介绍安装好了ES,下面就Kibana对ES的查询监控作介绍,就是常提到的大数据日志处理组件ELK里的K. 什么是Kibana?现引用园友的一段 ...
- 如何开发自己的搜索帝国之安装ik分词器
Elasticsearch默认提供的分词器,会把每个汉字分开,而不是我们想要的根据关键词来分词,我是中国人 不能简单的分成一个个字,我们更希望 “中国人”,“中国”,“我”这样的分词,这样我们就需要 ...
- FlexPaper二次开发问题及搜索高亮显示
原文:FlexPaper二次开发问题及搜索高亮显示 最近有个需求,做一个IT知识库,类似于文库,说到文库肯定会用到在线浏览文档了,所有在网上翻阅了一下类似豆丁的在线浏览器插件的资料,将其进行了二次开发 ...
- OpenERP(odoo)开发实例之搜索检索过去3个月的数据
转自:http://www.chinamaker.net/ OpenERP(odoo)开发实例之搜索过滤:检索过去3个月的数据 解决这个问题的重点在于 relativedelta 的应用 示例代码如下 ...
- 搜索浅谈(Elasticsearch和Lucene4分享)
刚刚过去的双11,真是给线下运营商好好上了一课.当今的互联网真是炙手可热,大家对互联网的热情是如此之高.相信电商之间的竞争将更加的激烈和残酷,不过,搜索,作为用户体验很重要的一点,各大电商也做的越来越 ...
- (转)开源分布式搜索平台ELK(Elasticsearch+Logstash+Kibana)入门学习资源索引
Github, Soundcloud, FogCreek, Stackoverflow, Foursquare,等公司通过elasticsearch提供搜索或大规模日志分析可视化等服务.博主近4个月搜 ...
- Elasticsearch搜索异常-------org.elasticsearch.common.io.stream.NotSerializableExceptionWrapper: parse_exception
异常问题: Caused by: org.elasticsearch.index.query.QueryShardException: Failed to parse query [LOL: Uzi和 ...
- 开源分布式搜索平台ELK(Elasticsearch+Logstash+Kibana)入门学习资源索引
from: http://www.w3c.com.cn/%E5%BC%80%E6%BA%90%E5%88%86%E5%B8%83%E5%BC%8F%E6%90%9C%E7%B4%A2%E5%B9%B ...
- 可以执行全文搜索的原因 Elasticsearch full-text search Kibana RESTful API with JSON over HTTP elasticsearch_action es 模糊查询
https://www.elastic.co/guide/en/elasticsearch/guide/current/getting-started.html Elasticsearch is a ...
随机推荐
- maven打包 bat自动化打包
maven打包,首先cd到项目根目录,如果想跳过测试阶段,可用:mvn package -DskipTests bat命令,说明start是打开文件夹的意思:e: cd E:\workspace\it ...
- AI相关 TensorFlow -卷积神经网络 踩坑日记之一
上次写完粗浅的BP算法 介绍 本来应该继续把 卷积神经网络算法写一下的 但是最近一直在踩 TensorFlow的坑.所以就先跳过算法介绍直接来应用场景,原谅我吧. TensorFlow 介绍 TF是g ...
- 【Android Developers Training】 23. 序言:保存数据
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- Struts2拦截器记录系统操作日志
前言 最近开发了一个项目,由于项目在整个开发过程中处于赶时间状态(每个项目都差不多如此)所以项目在收尾阶段发现缺少记录系统日志功能,以前系统都是直接写在每个模块的代码中,然后存入表单,在页面可以查看部 ...
- C# Socket编程笔记(自己看,转载)
看到这个题目,是不是很眼熟?在博客园里搜下,保证会发现关于这个东东的文章实在是太多了~~~真得是没有写得必要,而且我也有点懒得去琢磨字句.(看到这,肯定得来个转折的了,不然就看不到下文了,不是吗)但是 ...
- MySQL(三)--函数与谓词
前文已有涉及,这里作为总结重新整理一下. 一.函数 1.算术函数 NUMERIC 是大多数 DBMS 都支持的一种数据类型,通过 NUMBERIC ( 全体位数, 小数位数 ) 的形式来指定数值的大小 ...
- Html5元素布局
本教程十分简单,适合新手(因为我也是新手).本教程参考了"菜鸟教程". 笔者希望做到元素相对于浏览器的角落布局,即九个典型位置: 这个理念其实和UE4中的UMG锚定一样.Html5 ...
- es6的一些个人总结
es6的一些知识点 前言:es6(ECMAscript2015)标准 let.const.var的一些区别 let.const 块级作用域.全局作用域.函数作用域 var 全局作用域.函数作用域 变量 ...
- JavaScript一个whenReady函数,监听及注册事件
/** * 传递函数给whenReady(),当文档解析完成且为操作准备就绪时, * 函数将作为文档对象的方法调用 * DOMContentLoaded.readystatechange或load事件 ...
- jQuery知识点整合
一.jQuery介绍 jQuery是一个函数库,一个js文件,页面用script标签引入js文件就可以使用 <script type="text/javascript" sr ...