0

对于我的应用程序,我使用手电筒搜索引擎,在我的弹性表中,我存储了一个包含两个字段的数据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));
        }
    },

提前致谢

4

1 回答 1

0

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

在这里查看:https ://www.elastic.co/guide/en/elasticsearch/reference/5.0/search-search.html

于 2016-10-28T16:28:59.703 回答