firebase手电筒部分匹配只有一个字段

时间:2016-10-19 14:05:27

标签: elasticsearch firebase elasticjs

对于我的应用我使用手电筒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));
        }
    },

提前致谢

1 个答案:

答案 0 :(得分:0)

尝试使用"name:*fra*"作为查询。 query属性作为q参数传递给elasticsearch。

点击此处:https://www.elastic.co/guide/en/elasticsearch/reference/5.0/search-search.html