express搭建elasticsearch
1.首先,我们创建一个Express应用程序!我将使用express.js生成器。
npm install -g express-generator express ./autocompleter
cd autocompleter npm install
2.让我们准备elasticsearch。下载elasticsearch,并将其解压到文件系统的某个位置。然后运行
cd locationOfElasticsearch
bin/elasticsearch (OR bin/elasticsearch.bat on windows).
3.这样做会使用默认参数初始化elasticsearch(localhost上的端口9200是默认配置,稍后我们将需要它)。
现在,我将把elasticsearch npm包添加到之前创建的express.js应用程序中:
npm install elasticsearch --save
这将在package.json中添加以下行:
"elasticsearch": "^9.0.2"
4.elasticsearch模块
我将创建一个将在需要时导入的elasticsearch模块。首先,我将在module创建elasticsearch.js:
添加
var elasticsearch = require('elasticsearch');
var elasticClient = new elasticsearch.Client({
host: 'localhost:9200'
});
var indexName = "documents";
function getSuggestions(input) {
return elasticClient.search({
index: indexName,
body: {
query: {
match:{
title: input,
}
}
}
})// .then(function (response) {
// var hits = response.hits.hits;
// console.log(response);
// });
}
exports.getSuggestions = getSuggestions;
5.我现在已经准备好了elasticsearch。转移到Express.js!
首先,我正在为文档路由创建一个端点。我在./routes中创建一个新的文件documents.js,如下所示:
var express = require('express');
var router = express.Router();
var elastic = require('../elasticsearch');
/* GET suggestions */
router.get('/suggest/:input', function (req, res, next) {
elastic.getSuggestions(req.params.input).then(function (result) { res.json(result) });
});
/* POST document to be indexed */
router.post('/', function (req, res, next) {
elastic.addDocument(req.body).then(function (result) { res.json(result) });
});
module.exports = router;
6.使用承诺,我将弹性搜索的结果路由到response.json(data)函数。这将直接向用户输出从elasticsearch提供的JSON。
不要忘了把这行添加到app.js(在其他已经定义的路由之后,或者也许是:-))
var documents = require('./routes/documents');
//......
app.use('/documents', documents);
7.创建一个为documents的索引 如下:
127.0.0.1:/documents //端口
{
"settings":{
"number_of_shards":,
"number_of_replicas":
},
"mappings":{
"suggest":{
"properties":{
"title":{
"type":"text"
},
"content":{
"type":"text"
},
"suggert":{
"type":"completion",
"analyzer":"simple",
"search_analyzer":"simple",
"preserve_separators":true
}
}
}
}
}
8.插入数据如下工具postman
127.0.0.1:/documents/suggest/
{
"title":"hit",
"content":"hit",
"suggest":"hit"
}
9.前端如下:
function searchds(){
let searchs = $("#search").val();
$.get('documents/suggest/'+searchs,function(rs){
console.log(rs.hits.hits[]._source);
})
}
<form class="navbar-form navbar-left" id="searchForm" role="search">
<div class="form-group">
<input type="text" id="search" name="search" class="form-control" placeholder="Search">
</div>
<button type="button" class="btn btn-default" onclick="searchds()">搜索</button>
</form>
express搭建elasticsearch的更多相关文章
- 建立一个node.js服务器(使用express搭建第一个Web环境)
一.官网下载node.js 下载地址:https://nodejs.org/en/download/ 根据向导,下一步安装就可以了! 二.使用express搭建Web环境 express是一个开源的n ...
- ELK初学搭建(elasticsearch)
ELK初学搭建(elasticsearch) elasticsearch logstash kibana ELK初学搭建 elasticsearch 1.环境准备 centos6.8_64 mini ...
- 用Express搭建 blog (一)
Info 公司马上要举行 hack day 了,这次决定和小伙伴用 Express 作为框架来搭建我们的应用,所以昨天搭出来UI后,今天开始系统的学习下 Express. Start 首先是expre ...
- express搭建简易web的服务器
express搭建简易web的服务器 说到express我们就会想到nodejs,应为它是一款基于nodejs平台的web应用开发框架.既然它是基于nodejs平台的框架那么就得先安装nodejs. ...
- 用Nodejs+Express搭建web,nodejs路由和Ajax传数据并返回状态,nodejs+mysql通过ajax获取数据并写入数据库
小编自学Nodejs,看了好多文章发现都不全,而且好多都是一模一样的 当然了,这只是基础的demo,经供参考,但是相信也会有收获 今天的内容是用Nodejs+Express搭建基本的web,然后呢no ...
- nodejs-使用multer实现多张图片上传,express搭建脚手架
nodejs-使用multer实现多张图片上传,express搭建脚手架 在工作中,我们经常会看到用户有多张图片上传,并且预览展示的需求.那么在具体实现中又该怎么做呢? 本实例需要nodejs基础,本 ...
- express搭建服务器
学习express搭建node服务器 一.安装express框架 1.了解框架(百度) 2.下载框架 (1)使用npm命令下载 npm install express -g //全局安装,安装的是ex ...
- 基于 Express 搭建一个node项目 - 起步
一,如何基于 Express 搭建一个node项目 什么是Express 借用官方的介绍,Express是一个基于Node.js平台的极简.灵活的web应用开发框架,它提供了一系列强大的特性,帮助你创 ...
- [NodeJs] 用Nodejs+Express搭建web,nodejs路由和Ajax传数据并返回状态,nodejs+mysql通过ajax获取数据并写入数据库
小编自学Nodejs,看了好多文章发现都不全,而且好多都是一模一样的 当然了,这只是基础的demo,经供参考,但是相信也会有收获 今天的内容是用Nodejs+Express搭建基本的web,然后呢no ...
随机推荐
- Python 可变长度函数参数
func( *tuple_grp_nonkw_args, **dict_grp_kw_args ) 在编程的过程中,我们可能会遇到函数参数个数不固定的情况.这时就需要使用可变长度的函数参数来实现我们的 ...
- 20165101刘天野 2017-2018-2 《Java程序设计》第1周学习总结
20165101刘天野 2017-2018-2 <Java程序设计>第1周学习总结 教材学习内容总结 Java的地位 Java的特点 安装JDK Java应用程序开发步骤 反编译 安装Gi ...
- 在webBrowser中取Cookie的方法
在很多情况下我们会使用间进程的webBrowser去实现一些网页的请求和抓去,这个时候有部分网页是取不到Cookie的,那怎么办呢?下面我提供一个方法,应该99%的都能取到, //取当前webBrow ...
- 启动Hadoop时DFSZKFailoverController没有启动
在启动Hadoop成功后,并没有报错信息,jps查看进程,发现DFSZKFailoverController没有启动成功,后来发现是因为防火墙的原因,关掉重试就OK了 systemctl stop f ...
- linux shell编程(三) if 和 for
if 条件判断: 单分支的if语句if 判断条件: then statement1fi双分支的if语句if 判断条件;then statement1 statementelse statement3f ...
- STL list链表的用法详解
本文以List容器为例子,介绍了STL的基本内容,从容器到迭代器,再到普通函数,而且例子丰富,通俗易懂.不失为STL的入门文章,新手不容错过! 0 前言 1 定义一个list 2 使用list的成员函 ...
- python-socket2
UDP,服务端 #! /usr/bin/env python #coding=utf-8 import socket #创建socket,指定ipv4,udp类型 s = socket.socket( ...
- hdu-5637 Transform(位运算+bfs)
题目链接: Transform Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Other ...
- 如何查看myeclipse是否激活
myEclipse---->Subscription information--->Subscription expiration date 看这个日期到什么时候!另外建议别用太高版本的M ...
- CCUserDefault 存档
void HelloWorld::testCCUserDefault() { CCSize size = CCDirector::sharedDirector()->getWinSize(); ...