2016-04-27 35 views
1

我正在使用node.js在elasticsearch之上構建搜索引擎web應用程序。我使用sense在索引的elasticsearch中搜索了一個網站,現在使用我的express索引建立一個網頁。在node.js中獲取json輸出(使用elasticsearch並將其表示爲web框架)

這是我的javascript:

var elasticsearch = require('elasticsearch'); 

var client = elasticsearch.Client({ 
    hosts: [ 
    'localhost:9200' 
    ] 
}); 

module.exports.search = function(searchData, callback) { 
    client.search({ 
    index: 'demoindex1', 
    type: 'SearchTech', 
    body: { 
     query: { 
     bool: { 
      must: { 
      match: { 
       "newContent": searchData.searchTerm 
      } 
      } 
     } 
     } 
    } 
    }).then(function (resp) { 
    callback(resp.hits.hits); 
    }, function (err) { 
     callback(err.message) 
     console.log(err.message); 
    }); 
} 

這是我的路線的javascript:

var express = require('express'); 
var router = express.Router(); 

var searchModule = require('../search_module/search.js'); 

/* GET home page. */ 
router.get('/', function(req, res) { 
    res.render('index', { title: 'Express' }); 
}); 

router.post('/search-results', function(req, res) { 
    searchModule.search(req.body, function(data) { 
    res.render('index', { title: 'Express', results: data }); 
    }); 
}); 

module.exports = router; 

這是我使用創建的網頁我EJS文件。

<!DOCTYPE html> 
<html> 
    <head> 
    <title><%= title %></title> 

    </head> 
    <body> 
    <h1><%= title %></h1> 
    <form action='/search-results' method='post'> 
     <input type="text" name="searchTerm" placeholder="your search term here"> 
     <button type="submit"> SEARCH </button> 
    </form> 
    <ul> 
     <% if(locals.results) { %> 
     <% results.forEach(function(result) { %> 
      <li> 
      <%= result._source.title %> 
      <br><%= result._source.U %> 
      </li> 
     <% }) %> 
     <% } %> 
    </ul> 
    </body> 
</html> 

的網頁我得到這個長相: http://i.stack.imgur.com/w8dVE.png

如果我在尋找一個查詢,我得到的是我搜索查詢的稱號。但它不是json形式。如果我們執行查詢,我希望我的網頁打印出我們在elasticsearch中得到的相同結果(JSON格式)。

回答

1

一種簡單的方法顯示所述resultsjson data是通過在模板ejs使用stringify

實施例:

<!DOCTYPE html> 
<html> 
    <head> 
    <title>hello</title> 

    </head> 
    <body> 
    <h1><%= title %></h1> 
    <form action='/search-results' method='post'> 
     <input type="text" name="searchTerm" placeholder="your search term here"> 
     <button type="submit"> SEARCH </button> 
    </form> 
     <% if(locals.results) { %> 
     <pre> 
      <%- JSON.stringify(results,null,2) %> 
     </pre> 
     <% } %> 
    </body> 
</html> 
+0

小錯字? '<% - '應該讀取<%=' – Val

+0

@keety謝謝。現在我正在獲取elasticsearch的JSON輸出。 – Rose

+0

@Val謝謝。 – Rose

相關問題