1

我有一个 DataStax Astra 数据库,我有这个例子来说明如何获取具有特定用户名的用户:

curl --request GET \
    --url https://${ASTRA_DB_ID}-${ASTRA_DB_REGION}.apps.astra.datastax.com/api/rest/v2/keyspaces/${ASTRA_DB_KEYSPACE}/user?where=\{"user_username":\{"$eq":"'+*username_value_here*+'"\}\}' \
    --header "x-cassandra-token: ${ASTRA_DB_APPLICATION_TOKEN}"

由于 Cassandra,我没有选项允许过滤:

{"description":"Bad request: org.apache.cassandra.stargate.exceptions.InvalidRequestException: Cannot execute this query as it might involve data filtering and thus may have unpredictable performance. If you want to execute this query despite the performance unpredictability, use ALLOW FILTERING","code":400}

我在任何地方都找不到如何在 curl 命令中启用此选项,所以问题是我如何编写这个(如果可能的话)或者有更好的选择。欢迎任何帮助。

4

1 回答 1

2

REST API 当前不支持ALLOW FILTERING,但您有一些其他选项。

  • 如果用户名在您的系统中是唯一的,并且您能够更改数据模型,则可以创建user_username分区键。这将允许您按该列查询而无需过滤。
  • 如果您无法更改数据模型,另一种选择是在user_username. 该索引将使您能够维护现有的访问模式,同时还允许您通过用户名进行查询。
于 2021-11-29T00:26:08.763 回答