Aerospike可以通過字典順序獲取記錄。例如,如果U想要所有以「a」開頭的記錄,那麼U喜歡搜索bin> =「a」AND bin < =「az」按照字典順序的Aerospike限制記錄
1
A
回答
1
aerospike支持UDF模塊(在LUA和C語言)https://www.aerospike.com/docs/udf/developing_lua_modules.html 它可以爲您的目的。
1
User-Defined Functions Lua寫的擴展Aerospike的核心功能。您將創建一個stream UDF並將其附加到query。
Aerospike中的流UDF的一個最佳實踐是在將結果傳遞給UDF之前消除儘可能多的記錄,因此在這種情況下,我將創建另一個bin來保存前綴(第一個字母或子字符串,在你的用例上),並建立一個二級索引。這個想法是,查詢部分應該儘可能地返回儘可能小的子集。對於您的示例,前綴可以是單個字符,您可以向集合中的記錄添加新的bin'firstchar',然後在其上創建一個輔助索引build。
流UDF模塊看起來是這樣的:
local function range_filter(bin_name, substr_from, substr_to)
return function(record)
local val = record[bin_name]
if type(val) ~= 'string' then
return false
end
if val >= substr_from and val <= substr_to then
return true
else
return false
end
end
end
local function rec_to_map(record)
local xrec = map()
for i, bin_name in ipairs(record.bin_names(record)) do
xrec[bin_name] = xrec[bin_name]
end
return xrec
end
function str_between(stream, bin_name, substr_from, substr_to)
return stream : filter(range_filter(bin_name, substr_from, substr_to)) : map(rec_to_map)
end
在Python客戶端你如下調用它:
import aerospike
from aerospike import predicates as p
# instantiate the client and connect to the cluster, then:
query = client.query('test', 'this')
query.where(p.equals('firstchar', 'a'))
query.apply('strrangemod', 'str_between', ['a','az'])
相關問題
- 1. Aerospike select query中的記錄數限制
- 2. 按照字典順序排列一個
- 3. 按照包含特定字段的記錄數量的順序選擇記錄
- 4. 如何按照字典順序列舉無序對整數
- 5. 按照created_at和updated_at的順序選擇記錄兩次
- 6. 在java中按字典順序排列(按字母順序)
- 7. 如何按照字典順序排列ArrayList?
- 8. 如何按照字典順序對結構中的字符串進行排序?
- 9. Ecto - 如何按照確切順序通過ID獲取記錄
- 10. 在SQL中,我想分組記錄,但按照順序
- 11. Rails的查詢按照字母順序
- 12. 慶典按順序
- 13. 按照照片屬性的字母順序排列照片ArrayList
- 14. 按照字典順序以升序排列創建一個字符串列表
- 15. 字典的NSArray按照字典的值排序
- 16. 按字母順序篩選詞典
- 17. 按值重新組織字典順序?
- 18. python字典不按順序顯示
- 19. 按字典順序排列結果?
- 20. C#按任意順序遍歷字典
- 21. 創建字典從列表 - 按順序
- 22. 如何僅按照字母順序打印嵌套在列表中,字典內的內部字典的鍵?
- 23. 按字母順序排序字典,並按頻率打印
- 24. 爲什麼我的字典按照迭代的輸入順序打印錯誤?
- 25. JQ:按照正確的順序打印字典鍵名和封裝的屬性
- 26. 按照輸入的順序排列字典的值,如何輸入
- 27. 問題在活動記錄順序條款和限制
- 28. 查找不按順序記錄
- 29. 記錄歷史/順序按下
- 30. 按條款順序獲取記錄