vuejs使用elasticsearch api方法

Evi*_*vis 3 javascript elasticsearch vue.js

我有一个vuejs脚本,需要使用elasticsearch api方法.

// ./main.js
var Vue = require('vue');

Vue.use(require('vue-resource'));

import ES from './elasticsearch.js';

new Vue({

    el: 'body',

    methods: {
        search: function() {
            // should call the es.search...
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

和弹性搜索脚本:

// ./elasticsearch.js
var es = require('elasticsearch');

var client = new es.Client({
  host: 'localhost:9200'
  ,log: 'trace'
});

client.search({
  index: 'my_index',
  type: 'my_type',
  body: {
    fields: {},
    query: {
      match: {
        file_content: 'search_text'
      }
    }
  }
}).then(function (resp) {
    var hits = resp.hits.hits;
}, function (err) {
    console.trace(err.message);
});
Run Code Online (Sandbox Code Playgroud)

因此,在方法搜索main.js应调用client.search和将文本发送到我的服务器(_search_text_)进行搜索.

我们如何绑定它?或者,我们该如何使用elasticsearch对象里面vuejs方法?

谢谢!

Lin*_*org 5

您的elasticsearch.js文件未正确配置为模块:import ES from './elasticsearch'不会执行任何操作,因为该文件不会导出任何内容.

它应该看起来更像这样:

// ./elasticsearch.js
var es = require('elasticsearch');

var client = new es.Client({
  host: 'localhost:9200'
  ,log: 'trace'
});

function search (myIndex, myType, searchText)
  return client.search({
    index: myIndex,
    type: myType,
    body: {
      fields: {},
      query: {
        match: {
          file_content: searchText
        }
      }
    }
  }).then(function (resp) {
      return hits = resp.hits.hits;
  }, function (err) {
    console.trace(err.message);
});

export { search }
Run Code Online (Sandbox Code Playgroud)

我们定义一个名为的函数search并将其导出.注意我还包含return了实际返回Promise和函数结果的语句.

然后在main.js中我们可以用该名称导入它,并使用它:

// ./main.js
var Vue = require('vue');

Vue.use(require('vue-resource'));

import { search } from './elasticsearch.js';

new Vue({

    el: 'body',

    methods: {
        search: function() {
            var result = search('someindex', 'sometype', 'Search text here' ).then(function(res) {
  // do something with the result
  })
        }
    }
});
Run Code Online (Sandbox Code Playgroud)