如何使用aql获取Aerospike中的特定行

时间:2017-08-26 13:58:57

标签: aerospike

当我使用以下方法在Aerospike中查询时,它可以工作:

aql> select * from connekt.inapp

如下所示:

enter image description here

但是要查找特定条目我正在尝试跟踪查询,但它不起作用:

aql> select * from connekt.inapp where DIGEST = "viwZnPMMutuTZkPBV/PPL6hmWW0="
  

错误:(2)AEROSPIKE_ERR_RECORD_NOT_FOUND

enter image description here

如何使用aql从Aerospike获取特定行。

2 个答案:

答案 0 :(得分:4)

您看到的摘要“AAAA .... =”这是AQL中的一个美容错误 - 我相信它已经修复了几个月前,不确定哪个版本的TOOLS版本有它。 [Bug - TOOLS-746]

因为你已经知道了摘要 - 你在where =“viwZn ....”中使用了它,这是没有实际意义的。

BTW,做

$aql aql>HELP

获取常用AQL命令列表的信息。 (其中digest =和edigest =在生产中很少有用.AQL最适合用于探索数据,创建和管理辅助索引,开发UDF和安全管理)

答案 1 :(得分:2)

经过一些研究并通过docs后,我意识到在我的情况下,摘要采用Base64格式,因此我必须使用EDIGEST进行查询,如下所示:

aql> select * from connekt.inapp where EDIGEST = "viwZnPMMutuTZkPBV/PPL6hmWW0=" 

来自docs

  

提供摘要的HEX表示时(例如来自   服务器日志),使用DIGEST:

     

SELECT * FROM [。] WHERE DIGEST ='DIGEST_HEX_STRING'

     

当   提供摘要的Base64表示(例如来自   asbackup文件),使用EDIGEST:

     

SELECT * FROM [。] WHERE EDIGEST = DIGEST_B64_STRING

但是在查询时,结果摘要是AAAAAAAAAAAAAAAAAAAAAAAAAAA=,我不知道为什么会这样。

enter image description here

相关问题