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. 在java中按字典順序排列(按字母順序)
- 6. 如何按照字典順序排列ArrayList?
- 7. Ecto - 如何按照確切順序通過ID獲取記錄
- 8. 字典的NSArray按照字典的值排序
- 9. 按值重新組織字典順序?
- 10. 按字母順序篩選詞典
- 11. python字典不按順序顯示
- 12. 如何僅按照字母順序打印嵌套在列表中,字典內的內部字典的鍵?
- 13. JQ:按照正確的順序打印字典鍵名和封裝的屬性
- 14. 按照輸入的順序排列字典的值,如何輸入
- 15. 按Mule批次順序處理記錄
- 16. 查找不按順序記錄
- 17. sql - 測試記錄按順序插入
- 18. 記錄歷史/順序按下
- 19. 將按照寫入的順序對Python字典進行評估嗎?
- 20. 如何從字典中按照插入的順序檢索項目?
- 21. 按照Python中其他字典的值排序詞典
- 22. 如何按關鍵字按字母順序排列字典
- 23. 排序按值多維數組按照字母順序
- 24. 如何強制字典元素按順序寫入?
- 25. SQLite記錄沒有按照使用Core Data創建的順序保存?
- 26. 按字母順序排列PHP中的記錄
- 27. Postgresql記錄順序
- 28. mysql的意見,但按字母順序限制?
- 29. VB.NET:按字母順序排序的字典
- 30. SQL - 限制按日期加入記錄