我想用mongoose,express进行弹性搜索创建索引,但是没有可用的文档。我尝试mongoosastic,但这不舒服。
那么有人可以帮助我吗?
答案 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
}
}
}
}
}