product_skus의 인덱스에서 주어진 공급 업체의 제품 skus를 조회하는 판매 지수와 비교하여 주어진 공급 업체 ID에 대해 상위 100 개의 판매자를 생성하는 다음과 같은 쿼리가 있습니다. 이것은 잘 작동합니다.탄력 쿼리 필터 챌린지
query = {
size: 0,
query: {
bool: {
filter: [
{
constant_score: {
filter: {
terms: {
sku: {
index: "product_skus",
type: "product",
id: supplier_id,
path: "skus"
}
}
}
}
}
],
must_not: []
}
},
aggs: {
unit_sum: {
terms: {
field: "sku",
size: 100,
order: {
one: "desc"
}
},
aggs: {
one: {
sum: {
field: "units"
}
}
}
}
}
}
이제 특정 사용자가 공급자 skus의 하위 집합에 대한 액세스 권한을 제한해야하는 시나리오가 있습니다. 나는이 문제를 해결할 수있는 최선의 방법을 모색하고있다. 사용자가 Skus에 액세스하여 두 번째 조회를 수행 할 수있는 다른 색인이있는쪽으로 향하고 있지만 쿼리 논리를 머리에 쓰지는 못합니다.
예를 들어, 위의 쿼리에서 공급자 1에 대해 [A, B, C, D, E] 제품을 반환하고 John은 제품 [A, C, E]을 기반으로 한 결과 만 볼 수 있습니다. 이 쿼리? bool 내부의 필터 다음에 should 절을 추가하는 것만 큼 간단합니까?
미리 감사드립니다.
정말 소수의 사용자가 액세스 할 수있는 SKU의 수에 따라 달라질 것입니다. 추가 조항을 사용하여 벗어날 수 있다고 생각합니다. 수백 개라면 다른 솔루션이 필요할 것입니다. –
네, 수천이 아니라해도 수백 명이되는 것이 좋습니다. – Raoot
라우팅 사용에 대해 생각해 보셨습니까? https://www.elastic.co/blog/customizing-your-document-routing – Adonis