gpt4 book ai didi

python - Aerospike where 查询索引 python

转载 作者:行者123 更新时间:2023-12-01 03:19:26 24 4
gpt4 key购买 nike

我们目前正在测试“aerospike”。但文档中的某些点我们无法理解有关 key 的内容。

key = ('trivium', 'profile', 'data')
# Write a record
client.put(key, {
'name': 'John Doe',
'bin_data': 'KIJSA9878MGU87',
'public_profile': True
})

我们阅读了有关命名空间的信息,但是当我们尝试使用一般文档进行查询时。

client = aerospike.client(config).connect()
query = client.query('trivium', 'profile')
query.select('name', 'bin_data')
query.where(p.equals('public_profile', True))
print(query.results())

结果为空,但是当我们删除“where”语句时,查询会带来所有记录,文档说查询使用二级索引,但它是如何工作的?

问候。

最佳答案

您可以在查询中使用一个过滤器。该过滤器(在您的例子中,即相等过滤器)位于 public_profile bin 上。要使用过滤器,您必须在 public_profile bin 上构建二级索引 (SI),但 SI 只能位于包含数字或字符串数​​据类型的 bin 上。因此,要执行您想要执行的操作,请将 public_profile 更改为数字条目(例如 0 或 1),然后在该 bin 上添加二级索引,并对 0 或 1 的值使用相等过滤器。虽然您可以构建多个 SI,但您只能在任何给定查询中调用一个过滤器。您不能使用“AND”链接多个过滤器。如果必须使用多个过滤器,则必须编写 Stream UDF(用户定义函数)。您可以使用 AQL 定义 SI,只需执行一次。

$aql
aql>help --- see the command to add secondary index.
aql>exit

SI 驻留在进程 RAM 中。定义后,任何添加或修改的新数据都会根据情况自动由 aerospike 编制索引。如果您将 public_profile 上的索引定义为 NUMERIC,但在某些记录中在该 bin 中插入字符串数据,则这些记录将不会被索引,也不会参与查询过滤器。

关于python - Aerospike where 查询索引 python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42060297/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com