Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用elasticsearch api方法的vuejs_Javascript_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Vue.js - Fatal编程技术网 elasticsearch,vue.js,Javascript,elasticsearch,Vue.js" /> elasticsearch,vue.js,Javascript,elasticsearch,Vue.js" />

Javascript 使用elasticsearch api方法的vuejs

Javascript 使用elasticsearch api方法的vuejs,javascript,elasticsearch,vue.js,Javascript,elasticsearch,Vue.js,我有一个vuejs脚本,需要使用ElasticSearchAPI方法 // ./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

我有一个vuejs脚本,需要使用ElasticSearchAPI方法

// ./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...
        }
    }
});
以及elasticsearch脚本:

// ./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);
});
因此,在main.js中的search方法中,应该调用client.search并发送要在我的服务器中搜索的文本(_search_text_u)

我们怎样装订呢?或者我们如何在vuejs方法中使用elasticsearch对象

谢谢

我假设代码中的“resp.hits.hits”是搜索结果JSON对象数组,那么您可以如下定义您的vue实例:

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

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

import ES from './elasticsearch.js';

new Vue({

    el: 'body',
    data:{
       searchResults:[] //this tell vue it is an array
    }

    methods: {
        search: function() {
           var self = this;
           // call the search and get response data
           client.search(function(resp){
                self.searchResults = resp.hits.hits
           })
        }
    }
}))


在html中,您只需将DOM绑定到searchResults,仅此而已。

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

它应该看起来更像这样:

// ./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 }
我们定义了一个名为
search
的函数并将其导出。注意,我还使用了
return
语句来实际返回函数的承诺和结果

然后在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
  })
        }
    }
});

谢谢你的回答,但这正是我要做的,在vue脚本中获取客户端引用。使用client.search时,它会带来:main.js:71082未捕获引用错误:未定义客户端。我需要带上所有功能客户端。搜索。。。。在vuejs中插入一个方法。谢谢谢谢李纳斯,我会在家里试试,稍后再回复!顺致敬意,