фонарик firebase частичное совпадение только для одного поля

#elasticsearch #firebase #elasticjs

#elasticsearch #firebase #elasticjs

Вопрос:

для моего приложения я использую систему поиска фонарика, в моей эластичной таблице я храню данные с двумя полями id: { name: "", uid: "" } . когда я хочу восстановить определенное значение, я хочу выполнить частичное совпадение только в поле имени и восстановить все два поля, если совпадение сработает. в моих данных запроса обычно я сохраняю эту структуру

 search : {
  request: {
    -54shdjwirjghcb7364gf92jcns20ahd: {
        index: "firebase",
        type: "event",
        from: 0,
        size: 50,
        query: "*fra*"
    }
  }
}
  

результат положительный, но в этом случае фонарик ищет частичное совпадение во всех полях, потому что, если я делаю совпадение с частичным идентификатором пользователя или частичным именем, результат всегда положительный (если строка соответствует).

как я могу выполнить частичное совпадение только для одного поля?

моя очередь поиска на стороне сервера — это

 _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:

Попробуйте использовать "name:*fra*" в качестве запроса. Свойство запроса передается в elasticsearch в качестве параметра q .

Проверьте здесь:https://www.elastic.co/guide/en/elasticsearch/reference/5.0/search-search.html