如何在node,expressjs中弹性搜索中从mongoose创建索引

时间:2016-09-23 09:47:03

标签: javascript node.js mongodb express mongoose

我想用mongoose,express进行弹性搜索创建索引,但是没有可用的文档。我尝试mongoosastic,但这不舒服。

那么有人可以帮助我吗?

3 个答案:

答案 0 :(得分:2)

您可以使用此模块

https://github.com/elastic/elasticsearch-js

使用起来非常简单,并且有很多文档。

只需连接到DB->获取您需要的记录 - >对于每个记录运行发布(client.bulk方法)。

https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/api-reference.html

修改 这是示例

var es = require('elasticsearch'); var client = new es.Client({ host: 'localhost:9200', log: 'error' }); //doc is the mongoDB mocument var bulkData = [{index: {_index: "yourIndexName", _type: "Any type", _id: doc._id}}, doc]; client.bulk({ requestTimeout: 300000, body: bulkData }, function(err, response){//final callback here});

希望这有帮助。

答案 1 :(得分:0)

这适用于索引。所以我添加了搜索查询。我的搜索查询是这样的

 esClient.search({
            'index': 'product',
            //'q': '*'+searchKeyword+'*' this is searching query
            'body': {
                'query': {
                    'prefix': {'_all': searchKeyword}
                }
            }
        },function(err, response){ 
})

但是有一个问题。只搜索基于文本的搜索没有拼写错误,自动更正,附近,类似等。我想搜索查询谁检查拼写错误,类似,附近所有结果。所以plzz有人帮我。 感谢。

答案 2 :(得分:0)

我找到了拼写错误搜索的解决方案和基于搜索的全文。首先我将定义模糊搜索拼写错误的单词。

 var searchParams = {
      index: 'product',
      body: {
      "query": {
        "query_string": {
//search keyword is string which is searched
          "query": searchKeyword+'~',

        }
      }
    }
    };
esClient.search(searchParams,function(err, response){
})

另一个搜索更像这样...............

    "more_like_this": {
           "fields": [
             "productName","description","brand"
           ],
//searchKeyword is a string variable for searching
           "like_text": searchKeyword,
           "min_term_freq": 1,
             "min_doc_freq": 1,
           "max_query_terms": 12
         }
      }
    }

如果你想模糊结果,那么也试试这个

var searchParams = {
  index: 'product',
  body: {
      query:{
      "fuzzy" : {
    "ProductName" : {
        "value" :         searchKeyword,
        "boost" :         1.0,
        "fuzziness" :     3,
        "prefix_length" : 0,
        "max_expansions": 100
    }
}
  }
    }
    }