Aerospike where查询索引python

2024-10-06 12:29:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我们目前正在测试“aerospike”。 但是在文档中有一些我们无法理解的关于密钥的要点。在

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

我们了解了名称空间,但是当我们试图使用常规文档进行查询时。在

^{pr2}$

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

敬上。在


Tags: keyname文档clientdataput密钥record
1条回答
网友
1楼 · 发布于 2024-10-06 12:29:30

您可以在查询中使用一个筛选器。这个过滤器,在您的例子中,是相等过滤器,在公共配置文件bin上。要使用筛选器,必须在public_profile bin上构建辅助索引(SI),但是SIs只能位于包含数字或字符串数据类型的bin上。因此,要执行您正在尝试的操作,请将public_profile更改为一个数字条目,例如0或1,然后在该bin上添加一个辅助索引,并对值0或1使用相等筛选器。虽然可以构建多个SIs,但是在任何给定的查询中只能调用一个过滤器。不能用“AND”链接多个过滤器。如果必须使用多个过滤器,则必须编写流udf(用户定义函数)。你可以用AQL来定义SIs,你只需要做一次。在

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

SIs位于进程RAM中。一旦定义,任何添加或修改的新数据将由aerospike自动索引(如适用)。如果将public_profile上的index定义为数值,但在某些记录中,在该bin中插入字符串数据,则这些记录将不会被索引,并且不会参与查询筛选器。在

相关问题 更多 >