如何在elasticsearch中搜索
How to search in elasticsearch
我想在elasticsearch中搜索。
我使用 mongoosastic 作为 elasticsearch 的驱动程序。
我想搜索一个字符串是否存在于一个字段中,我想搜索另一个字段是否应该完全匹配。我怎样才能在 mongoosastic 中做到这一点。
您需要的是 Elasticsearch 的 bool query 功能。
我不知道你在这个过程中卡在哪里,但我会尽量描述这个过程。
要将模型索引到 Elasticsearch 中,只需添加插件即可。
var mongoose = require('mongoose'),
mongoosastic = require('mongoosastic'),
Schema = mongoose.Schema
var User = new Schema({
name: String,
country: String,
age: Number,
email: String,
city: String})
User.plugin(mongoosastic)
然后您可以对您的模型执行 ES 搜索,但首先要格式化您的查询。假设您希望每个用户都居住在英国,而不是伦敦,并且您希望匹配 30 到 40 岁之间的用户:
var query = {
"bool" : {
"must" : {
"term" : { "country" : "england" }
},
"must_not" : {
"city" : { "city" : "london" }
},
"should" : {
"range" : {
"age" : { "from" : 30, "to" : 40}
}
}
}
}
您将获得在年龄方面与您的查询不匹配的用户,但 ES 将使用评分系统对结果进行排序。
最后将查询发送到 ES 并处理结果
User.search(query, function (err, users) {
if (err) {
//Handle error
}
var results = users.hits.hits;
//work with your hits
}
我想在elasticsearch中搜索。 我使用 mongoosastic 作为 elasticsearch 的驱动程序。 我想搜索一个字符串是否存在于一个字段中,我想搜索另一个字段是否应该完全匹配。我怎样才能在 mongoosastic 中做到这一点。
您需要的是 Elasticsearch 的 bool query 功能。
我不知道你在这个过程中卡在哪里,但我会尽量描述这个过程。
要将模型索引到 Elasticsearch 中,只需添加插件即可。
var mongoose = require('mongoose'),
mongoosastic = require('mongoosastic'),
Schema = mongoose.Schema
var User = new Schema({
name: String,
country: String,
age: Number,
email: String,
city: String})
User.plugin(mongoosastic)
然后您可以对您的模型执行 ES 搜索,但首先要格式化您的查询。假设您希望每个用户都居住在英国,而不是伦敦,并且您希望匹配 30 到 40 岁之间的用户:
var query = {
"bool" : {
"must" : {
"term" : { "country" : "england" }
},
"must_not" : {
"city" : { "city" : "london" }
},
"should" : {
"range" : {
"age" : { "from" : 30, "to" : 40}
}
}
}
}
您将获得在年龄方面与您的查询不匹配的用户,但 ES 将使用评分系统对结果进行排序。
最后将查询发送到 ES 并处理结果
User.search(query, function (err, users) {
if (err) {
//Handle error
}
var results = users.hits.hits;
//work with your hits
}