针对 AWS Glue Data Catalog 的语义搜索
注意
业务上下文和语义搜索目前为预览 AWS Glue 状态,可能会发生更改。
除了精确的关键字匹配之外,语义搜索还使您能够通过含义来发现数据资产。根据与查询的语义相似度对结果进行排名。您可以使用对资产类型、元数据字段和术语表条目进行筛选来缩小结果范围。
使用 SearchAssets API
SearchAssets API 接受 SearchText、FilterClause,或两者皆可。如果两者均未提供,则返回所有资产。可选参数:Sort、MaxResults、NextToken。
文本搜索
aws glue search-assets \ --search-text "customer purchases"
输出示例:
{ "Items": [ {"Id": "c9vq7sh2fk4t2h", "AssetName": "Customer Sales Transactions", "AssetTypeId": "Table"} ] }
使用 --max-results 限制结果:
aws glue search-assets \ --search-text "quarterly revenue" \ --max-results 5
筛选搜索结果
使用 FilterClause 缩小结果范围。支持的筛选条件
AttributeFilter–运算符:
equals、greaterThan、greaterThanOrEquals、lessThan、lessThanOrEquals、notExists。AndAllFilters–所有筛选器都必须匹配(逻辑与)。
OrAnyFilters–必须至少有一个匹配(逻辑或)。
按单个属性进行筛选
仅筛选到表格资产:
aws glue search-assets \ --search-text "revenue" \ --filter-clause '{ "AttributeFilter": { "Attribute": "type", "Operator": "equals", "Value": {"StringValue": "Table"} } }'
将筛选器和与逻辑结合使用
查找在某个时间戳之后更新的表格资产:
aws glue search-assets \ --search-text "customer data" \ --filter-clause '{ "AndAllFilters": [ {"AttributeFilter": {"Attribute": "type", "Operator": "equals", "Value": {"StringValue": "Table"}}}, {"AttributeFilter": {"Attribute": "updatedAt", "Operator": "greaterThan", "Value": {"LongValue": 1718400000}}} ] }'
将筛选器与或逻辑相结合
搜索表格或技能资产:
aws glue search-assets \ --search-text "customer data" \ --filter-clause '{ "OrAnyFilters": [ {"AttributeFilter": {"Attribute": "type", "Operator": "equals", "Value": {"StringValue": "Table"}}}, {"AttributeFilter": {"Attribute": "type", "Operator": "equals", "Value": {"StringValue": "Skill"}}} ] }'
按术语表条目进行筛选
筛选到标有特定术语表条目的资产(按条目ID):
aws glue search-assets \ --search-text "financial data" \ --filter-clause '{ "AttributeFilter": { "Attribute": "glossaryTerms", "Operator": "equals", "Value": {"StringValue": "glossary-term-id"} } }'
使用嵌套的与和或筛选器
查找带有特定术语表条目的表格或技能资产:
aws glue search-assets \ --search-text "customer" \ --filter-clause '{ "AndAllFilters": [ {"OrAnyFilters": [ {"AttributeFilter": {"Attribute": "type", "Operator": "equals", "Value": {"StringValue": "Table"}}}, {"AttributeFilter": {"Attribute": "type", "Operator": "equals", "Value": {"StringValue": "Skill"}}} ]}, {"AttributeFilter": {"Attribute": "glossaryTerms", "Operator": "equals", "Value": {"StringValue": "glossary-term-id"}}} ] }'
排序搜索结果
默认情况下,结果按语义相关性排序。要按属性排序,请执行以下操作:
aws glue search-assets \ --search-text "customer purchases" \ --sort '{"Attribute": "assetName", "Order": "ASCENDING"}'
aws glue search-assets \ --search-text "customer purchases" \ --sort '{"Attribute": "updatedAt", "Order": "DESCENDING"}'
注意
指定排序属性时,结果按该属性排序,而不是按语义相关性排序。
对搜索结果进行分页
当结果超过时 MaxResults,响应将包含 NextToken。使用它来检索其他页面。
aws glue search-assets \ --search-text "customer data" \ --max-results 10 \ --next-token "eyJsYXN0RXZhbHVhdGVkS2V5Ijp7ImlkIjp7InMiOiJhMWIyYzNkNCJ9fX0="
继续操作,直到响应不再包含 NextToken。
运行仅限筛选器的查询
仅使用 FilterClause 而不使用 SearchText,可列出未经过语义排名的资产。
aws glue search-assets \ --filter-clause '{"AttributeFilter": {"Attribute": "type", "Operator": "equals", "Value": {"StringValue": "Table"}}}' \ --max-results 20
注意
同时省略 SearchText 和 FilterClause 时,API 会返回所有资产。
示例
发现域的技能资产
查找与销售数据相关的技能资产:
aws glue search-assets \ --search-text "sales domain usage rules" \ --filter-clause '{"AttributeFilter": {"Attribute": "type", "Operator": "equals", "Value": {"StringValue": "Skill"}}}'
注意
此查询仅返回自定义技能资产。SearchAssets API 不会返回托管技能。
将文本搜索和排序结合起来
全面了解匹配的资产:
aws glue search-assets \ --search-text "customer" \ --sort '{"Attribute": "updatedAt", "Order": "DESCENDING"}' \ --max-results 10