1.首先,我们创建一个Express应用程序!我将使用express.js生成器。

  1. npm install -g express-generator
  2.  
  3. express ./autocompleter
  4. cd autocompleter
  5.  
  6. npm install

2.让我们准备elasticsearch。下载elasticsearch,并将其解压到文件系统的某个位置。然后运行

  1. cd locationOfElasticsearch
  2. bin/elasticsearch (OR bin/elasticsearch.bat on windows).

3.这样做会使用默认参数初始化elasticsearch(localhost上的端口9200是默认配置,稍后我们将需要它)。

现在,我将把elasticsearch npm包添加到之前创建的express.js应用程序中:

  1. npm install elasticsearch --save

这将在package.json中添加以下行:

  1. "elasticsearch": "^9.0.2"

4.elasticsearch模块
我将创建一个将在需要时导入的elasticsearch模块。首先,我将在module创建elasticsearch.js:
添加

  1. var elasticsearch = require('elasticsearch');
  2. var elasticClient = new elasticsearch.Client({
  3. host: 'localhost:9200'
  4. });
  5.  
  6. var indexName = "documents";
  7. function getSuggestions(input) {
  8. return elasticClient.search({
  9. index: indexName,
  10. body: {
  11. query: {
  12. match:{
  13. title: input,
  14. }
  15. }
  16. }
  17. })// .then(function (response) {
  18. // var hits = response.hits.hits;
  19. // console.log(response);
  20. // });
  21. }
  22. exports.getSuggestions = getSuggestions;

5.我现在已经准备好了elasticsearch。转移到Express.js!
首先,我正在为文档路由创建一个端点。我在./routes中创建一个新的文件documents.js,如下所示

  1. var express = require('express');
  2. var router = express.Router();
  3.  
  4. var elastic = require('../elasticsearch');
  5.  
  6. /* GET suggestions */
  7. router.get('/suggest/:input', function (req, res, next) {
  8. elastic.getSuggestions(req.params.input).then(function (result) { res.json(result) });
  9. });
  10.  
  11. /* POST document to be indexed */
  12. router.post('/', function (req, res, next) {
  13. elastic.addDocument(req.body).then(function (result) { res.json(result) });
  14. });
  15.  
  16. module.exports = router;

6.使用承诺,我将弹性搜索的结果路由到response.json(data)函数。这将直接向用户输出从elasticsearch提供的JSON。

不要忘了把这行添加到app.js(在其他已经定义的路由之后,或者也许是:-))

  1. var documents = require('./routes/documents');
  2. //......
  3. app.use('/documents', documents);

7.创建一个为documents的索引 如下:

  1. 127.0.0.1:9200/documents
  2. {
  3. "settings":{
  4. "number_of_shards":4,
  5. "number_of_replicas":2
  6. },
  7. "mappings":{
  8. "suggest":{
  9. "properties":{
  10. "title":{
  11. "type":"text"
  12. },
  13. "content":{
  14. "type":"text"
  15. },
  16. "suggert":{
  17. "type":"completion",
  18. "analyzer":"simple",
  19. "search_analyzer":"simple",
  20. "preserve_separators":true
  21. }
  22. }
  23. }
  24. }
  25. }

8.插入数据如下

  1. 127.0.0.1:9200/documents/suggest/1
  2. {
  3. "title":"hit",
  4. "content":"hit",
  5. "suggest":"hit"
  6. }

9.前端如下:

  1. function searchds(){
  2. let searchs = $("#search").val();
  3. $.get('documents/suggest/'+searchs,function(rs){
  4. console.log(rs.hits.hits[0]._source);
  5. })
  6. }
  7.  
  8. <form class="navbar-form navbar-left" id="searchForm" role="search">
  9. <div class="form-group">
  10. <input type="text" id="search" name="search" class="form-control" placeholder="Search">
  11. </div>
  12. <button type="button" class="btn btn-default" onclick="searchds()">搜索</button>
  13. </form>

第四篇 express 安装esasticsearch的更多相关文章

  1. 从0开始搭建SQL Server AlwaysOn 第四篇(配置异地机房节点)

    从0开始搭建SQL Server AlwaysOn 第四篇(配置异地机房节点) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www ...

  2. 【第四篇】ASP.NET MVC快速入门之完整示例(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  3. IIS负载均衡-Application Request Route详解第四篇:使用ARR实现三层部署架构(转载)

    IIS负载均衡-Application Request Route详解第四篇:使用ARR实现三层部署架构 系列文章链接: IIS负载均衡-Application Request Route详解第一篇: ...

  4. 【OpenCV第一篇】安装OpenCV

    [OpenCV第一篇]安装OpenCV 本篇主要介绍如何下载OpenCV安装程序,如何在VS2008下安装配置OpenCV,文章最后还介绍了一个使用OpenCV的简单小例子. <OpenCV入门 ...

  5. Express安装入门与模版引擎ejs

    Express安装入门与模版引擎ejs 目录 前言 Express简介和安装 运行第一个基于express框架的Web 模版引擎 ejs express项目结构 express项目分析 app.set ...

  6. node Express安装与使用(一)

    首先放上官网地址 http://www.expressjs.com.cn/ 学会查阅官方手册,它是最好的资料. 1.Express安装 首先确定你已经安装了 Node.js,然后去你创建的项目目录下( ...

  7. JDFS:一款分布式文件管理系统,第四篇(流式云存储续篇)

    一 前言 本篇博客是JDFS系列博客的第四篇,从最初简单的上传.下载,到后来加入分布式功能,背后经历了大量的调试,尤其当实验的虚拟计算结点数目增加后,一些潜在的隐藏很深的bug就陆续爆发.在此之前笔者 ...

  8. ElasticSearch入门 第四篇:使用C#添加和更新文档

    这是ElasticSearch 2.4 版本系列的第四篇: ElasticSearch入门 第一篇:Windows下安装ElasticSearch ElasticSearch入门 第二篇:集群配置 E ...

  9. nodejs备忘总结(一) -- node和express安装与配置,新建简单项目(附安装配置过程中遇到问题的解决方法)

    安装node 本文以安装node_v8.9.0为例(win10环境),下载node-v8.9.0-x64.msi插件 下载后,安装,安装目录默认为C:\Program Files\nodejs 配置环 ...

随机推荐

  1. HDU - 1114 Piggy-Bank 【完全背包】

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1114 题意 给出一个储钱罐 不知道里面有多少钱 但是可以通过重量来判断 先给出空储钱罐的重量 再给出装 ...

  2. es5严格模式简谈

    一.用法: 在全局或局部开头加上“use strict”即可 就是一行字符串,不会对不兼容严格模式的浏览器产生影响.二.不再兼容es3的一些不规则语法.使用全新的es5规范.三.两种用法: 全局严格模 ...

  3. X-real-ip与X-Forwarded-For

    经过反向代理后,客户端与web服务器之间添加了中间层,因此: 1.代理服务器使用$remote_addr拿到的会是客户端的ip 2. web服务器使用$remote_addr拿到的会是代理服务器的ip ...

  4. 初步了解Spark生态系统及Spark Streaming

    一.        场景 ◆ Spark[4]: Scope:  a MapReduce-like cluster computing framework designed for low-laten ...

  5. 中国剩余定理的应用:猪的安家 ->福州大学 OJ

                                                                     Problem 1402 猪的安家 Accept: 984    Su ...

  6. Spark- Spark内核架构原理和Spark架构深度剖析

    Spark内核架构原理 1.Driver 选spark节点之一,提交我们编写的spark程序,开启一个Driver进程,执行我们的Application应用程序,也就是我们自己编写的代码.Driver ...

  7. R语言编程中的常见错误

    R语言编程中的常见错误有一些错误是R的初学者和经验丰富的R程序员都可能常犯的.如果程序出错了,请检查以下几方面. 使用了错误的大小写.help().Help()和HELP()是三个不同的函数(只有第 ...

  8. 分享知识-快乐自己:大数据(hadoop)环境搭建

    大数据 hadoop 环境搭建: 一):大数据(hadoop)初始化环境搭建 二):大数据(hadoop)环境搭建 三):运行wordcount案例 四):揭秘HDFS 五):揭秘MapReduce ...

  9. 【python】关于函数递归使用 return 后,收到数据为 None。

    在写一个辗转相除求最小公因数的程序的时候,突然发现自己不管怎么写(除了两数恰巧可以整除),return 返回的值恒为 none. 代码为此: def gcd(a,b): if a%b==0: retu ...

  10. Javascript-- jQuery事件篇(1)

    jQuery鼠标事件之click与dbclick事件 用交互操作中,最简单直接的操作就是点击操作.jQuery提供了两个方法一个是click方法用于监听用户单击操作,另一个方法是dbclick方法用于 ...