ES中的資料:
| f1(字串) | f2(字串) | 身份證(整數) |
|---|---|---|
| 蘋果 | abcdef | 1 |
| perl | ed f afe | 2 |
| perl | AE ?F ASDF | 3 |
| perl | 聯邦科 | 4 |
我要查找f2[2]='f',即id=2和3的資料
如何有效地找到它?
f2 的長度是固定的,最多可以是 336 個字符。
我的解決方案是:
{
"query": {
"regexp": {
"f2": ".{2}f.*"
}
}
}
但我不認為使用正則運算式會有效,還有更好的選擇嗎?
uj5u.com熱心網友回復:
我建議對不同的選項進行基準測驗,看看哪一個最適合您的資料集和使用模式。這些將包括:
- 你的正則運算式
- 轉向
"f2": "edfadfe"到"f2_1": "e", "f2_2": "d", ...您的索引流水線 - 轉向
"f2": "edfadfe"到"f2_spaced": ["e", " d", " f", ...]您的索引管道或自定義標記過濾器
這兩個預處理選項在查詢時間上都非常快,但在索引時間上較慢,并且會使用大量磁盤空間。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/393207.html
標籤:弹性搜索
上一篇:在地理搜索結果中包括距離
