Aerospike where 查询索引 python
Aerospike where query index python
我们目前正在测试 "aerospike"。
但是文档中有一些地方我们参考按键不理解。
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 容器中。要使用过滤器,您必须在 public_profile bin 上构建二级索引 (SI),但是 SI 只能在包含数字或字符串数据类型的 bin 上。因此,要执行您正在尝试执行的操作,请将 public_profile 更改为数字条目,比如 0 或 1,然后在该 bin 上添加一个二级索引,并对值 0 或 1 使用相等过滤器。虽然您可以构建多个 SI,您只能在任何给定查询中调用一个过滤器。您不能使用 "AND" 链接多个过滤器。如果必须使用多个过滤器,则必须编写流 UDF(用户定义函数)。您可以使用 AQL 来定义 SI,您只需要做一次。
$aql
aql>help --- see the command to add secondary index.
aql>exit
SI 驻留在进程 RAM 中。一旦定义,任何添加或修改的新数据都会在适用时由 aerospike 自动索引。如果您将 public_profile 上的索引定义为 NUMERIC,但在某些记录中将字符串数据插入到该 bin 中,则这些记录将不会被索引并且不会参与查询过滤器。
我们目前正在测试 "aerospike"。 但是文档中有一些地方我们参考按键不理解。
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 容器中。要使用过滤器,您必须在 public_profile bin 上构建二级索引 (SI),但是 SI 只能在包含数字或字符串数据类型的 bin 上。因此,要执行您正在尝试执行的操作,请将 public_profile 更改为数字条目,比如 0 或 1,然后在该 bin 上添加一个二级索引,并对值 0 或 1 使用相等过滤器。虽然您可以构建多个 SI,您只能在任何给定查询中调用一个过滤器。您不能使用 "AND" 链接多个过滤器。如果必须使用多个过滤器,则必须编写流 UDF(用户定义函数)。您可以使用 AQL 来定义 SI,您只需要做一次。
$aql
aql>help --- see the command to add secondary index.
aql>exit
SI 驻留在进程 RAM 中。一旦定义,任何添加或修改的新数据都会在适用时由 aerospike 自动索引。如果您将 public_profile 上的索引定义为 NUMERIC,但在某些记录中将字符串数据插入到该 bin 中,则这些记录将不会被索引并且不会参与查询过滤器。