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. 按条款顺序获取记录