私のアプリでは、懐中電灯の検索エンジンを使用します。エラスティック テーブルには、2 つのフィールドを持つデータを格納しますid: { name: "", uid: "" }
。特定の値を取得したい場合、名前フィールドでのみ部分一致を実行し、一致が機能する場合は 2 つのフィールドすべてを取得します。私のリクエストデータでは、通常、この構造を保存します
search : {
request: {
-54shdjwirjghcb7364gf92jcns20ahd: {
index: "firebase",
type: "event",
from: 0,
size: 50,
query: "*fra*"
}
}
}
結果は肯定的ですが、この場合、すべてのフィールドで部分一致を懐中電灯で検索します。これは、部分的な uid または部分的な名前と一致する場合、結果は常に肯定的であるためです (文字列が一致する場合)。
1 つのフィールドだけを部分的に一致させるにはどうすればよいですか?
私のサーバー側の検索キューはこれです
_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));
}
},
前もって感謝します