对于我的应用我使用手电筒searchengine,在我的弹性表中我存储了一个包含两个字段id: { name: "", uid: "" }
的数据。当我想要检索某个值时,我想只在名称字段中进行部分匹配,并在匹配工作时检索所有两个字段。
在我的请求数据中通常我存储此结构
search : {
request: {
-54shdjwirjghcb7364gf92jcns20ahd: {
index: "firebase",
type: "event",
from: 0,
size: 50,
query: "*fra*"
}
}
}
结果是肯定的,但在这种情况下,手电筒搜索所有字段中的部分匹配,因为如果我与部分uid或部分名称匹配,则结果始终为正(如果字符串对应)。
我如何只对一个字段进行部分匹配?
我的服务器端搜索队列就是这个
_process: function (snap) {
var dat = snap.val();
var key = snap.key;
if (this._assertValidSearch(key, dat)) {
// Perform (a very simple) ElasticSearch query
this.esc.search({
index: dat.index,
type: dat.type,
from : dat.query.from,
size : dat.query.size,
q: dat.query
}, function (error, response) {
if (error) {
this._reply(key, { error: error, total: 0 });
} else {
this._reply(key, response);
}
}.bind(this));
}
},
提前致谢
答案 0 :(得分:0)
尝试使用"name:*fra*"
作为查询。 query属性作为q参数传递给elasticsearch。
点击此处:https://www.elastic.co/guide/en/elasticsearch/reference/5.0/search-search.html