Elasticsearch 是一款开源的搜索引擎,由于其高性能和分布式系统架构而备受关注.本文将讨论其关键特性,并手把手教你如何用它创建 Node.js 搜索引擎. Elasticsearch 概述 Elasticsearch 底层使用 Apache Lucene 库,Apache Lucene 自身是一款高性能.基于文本的搜索引擎库. Elasticsearch 并不以提供数据存储和检索等类数据库功能为核心目标,相反,它以搜索引擎(服务器端)为目标,意在提供数据索引.数据检索.和数据实时分析功…
1.检测集群是否健康. curl -XGET 'localhost:9200/_cat/health?v' #后面加一个v表示让输出内容表格显示表头 绿色表示一切正常,黄色表示所有的数据可用但是部分副本还没有分配,红色表示部分数据因为某些原因不可用. 2.查看集群的的节点列表. curl -XGET 'localhost:9200/_cat/nodes?v' 3.创建索引(方法一) #创建一个名为demo_v1的索引 > curl -XPUT 'localhost:9200/demo_v1' {…
1.学习Elasticsearch概述. 了解Elasticsearch是什么?能做什么?可以查一下elasticsearch.lucene等的相关介绍,另外也可以查查资料比较一下其它的搜索引擎sphinx.reds等. 2.学习Elasticsearch术语. 上面参考文章中只列了几个核心术语,其它更多的术语可以自己查找资料. 3.安装Elasticsearch并运行. a.下载Elasticsearch: https://www.elastic.co/downloads/elasticsea…
一.目标 使用node搭建一个知识库检索系统,要求词条平均检索速度必须在1s以内. 二.思路. 本人思路如下图. 橙色部分为我们要开发的内容, ES服务搭建(暂时用单节点测试,集群搭建以后再说), 三.示例测试速度. 本月使用示例 node-elasticsearch-tutorial 导入了400多万条数据,本地单节点测试检索速度是毫秒级的,正式环境肯定比本地配置要高,所以速度完全不用担心. 四.开发. 系统开发需要使用官方为Node.js提供的elasticsearch模块. 开发不困难,本…
1.Elasticsearch搜索数据有两种方式. 一种方式是通过REST请求URI,发送搜索参数: 另一种是通过REST请求体,发送搜索参数.而请求体允许你包含更容易表达和可阅读的JSON格式.这个是DSL查询(Query DSL). 2.Elasticsearch搜索基本语法. [GET|POST] http://domain.com/your_index/type1,type2/_search{?search_type=count|scan|...} 注意,随着ES版本变化,搜索语法也有小…
上一篇说到如果一个索引的mapping设置过了,想要修改type或analyzer,通常的做法是新建一个索引,重新设置mapping,再把数据同步过来. 那么如何实现零停机时间更新索引配置或迁移索引?这就需要用到索引的别名设置. 思路: 1.假设我们的索引是demo_v1,我们定义了一个别名demo,以后所有的操作都用别名demo操作. 2.现在索引demo_v1的mapping设置或者其他一些设置不满足我们的需求了,我们需要修改.新建一个索引demo_v2,同时设置好最新配置. 3.同步索引d…
1.背景介绍 最近做的一个项目需要快速检索数据,经过商讨后采用了ElasticSearch作为快速检索数据引擎,但是数据如何同步到ES中是个问题,我们最开始计划了定时任务.mysql trigger等方式,最后选择了比较好的canal组件,通过canal同步mysql中的数据到ES中,所以要学习一下canal. 2.canal介绍 早期,阿里巴巴B2B公司因为存在杭州和美国双机房部署,存在跨机房同步的业务需求.不过早期的数据库同步业务,主要是基于trigger的方式获取增量变更,不过从2010年…
使用Elasticsearch不免要提到curl工具,curl是利用URL语法在命令行方式下工作的开源文件传输工具.官网地址:https://curl.haxx.se/ 因为elasticsearch提供了标准的http接口,所以我们可以使用curl方便的访问elasticsearch. 下面收集了一些使用curl命令操作elasticsearch. 第一:_cat系列_cat系列提供了一系列查询elasticsearch集群状态的接口.你可以通过执行 curl -XGET localhost:…
上一篇我们讲了如何用node.js给图片加水印,但是只是给某一张图片加,并没有涉及到批量处理.这一篇,我们学习如果批量进行图片加水印处理. 一.准备工作: 首先,你要阅读完这篇文章:http://www.yuanbo88.com/article.php?rid=31. 然后,我们安装node.js的一个模块:imageinfo. npm install imageinfo 二.直接上DEMO: 步骤如下: step1:文件夹结构 step2:JS代码 //引用文件系统模块 var fs = re…
1. 下载elasticsearch库 npm install elasticsearch --save 2.在脚本里导入模块,如下所示 const elasticsearch = require('elasticsearch'); 3.调用 function getReport(md5, callback) { var search = { index: 'file-behavior-report-*', type: 'report', body: { query: { "bool"…