Skip to content

Instantly share code, notes, and snippets.

@SeRGei93
Created February 11, 2024 19:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save SeRGei93/d3b29ff6b67c9756e1416d32427b53fe to your computer and use it in GitHub Desktop.
Save SeRGei93/d3b29ff6b67c9756e1416d32427b53fe to your computer and use it in GitHub Desktop.
elastic facet filter
Mapping
{
"properties": {
"id": {
"type": "integer"
},
"active": {
"type": "keyword"
},
"canBuy": {
"type": "keyword"
},
"sections": {
"type": "integer"
},
"textFacets": {
"type": "nested",
"properties": {
"id": {
"type": "keyword"
},
"value": {
"type": "keyword"
}
}
}
}
}
Query
{
"query": {
"bool": {
"must": [
{
"terms": {
"active": [
true
]
}
},
{
"terms": {
"canBuy": [
true
]
}
},
{
"terms": {
"sections": [
3233
]
}
}
]
}
},
"post_filter": {
"bool": {
"filter": [
{
"nested": {
"path": "textFacets",
"query": {
"bool": {
"filter": [
{
"term": {
"textFacets.id": {
"value": "obem-vstroennoy-pamyati"
}
}
},
{
"terms": {
"textFacets.value": [
"32-gb",
"128-gb"
]
}
}
]
}
}
}
},
{
"nested": {
"path": "textFacets",
"query": {
"bool": {
"filter": [
{
"term": {
"textFacets.id": {
"value": "brand"
}
}
},
{
"terms": {
"textFacets.value": [
"apple",
"samsung"
]
}
}
]
}
}
}
}
]
}
},
"aggs": {
"agg_brand": {
"nested": {
"path": "textFacets"
},
"aggs": {
"brand_filter": {
"filter": {
"nested": {
"path": "textFacets",
"query": {
"bool": {
"must": [
{
"term": {
"textFacets.id": "obem-vstroennoy-pamyati"
}
},
{
"terms": {
"textFacets.value": [
"256-gb",
"512-gb"
]
}
}
]
}
}
}
},
"aggs": {
"properties": {
"terms": {
"field": "textFacets.id",
"size": 100
},
"aggs": {
"values": {
"terms": {
"field": "textFacets.value",
"size": 100
}
}
}
}
}
}
}
}
},
"size": 10
}
Result
{
"took": 51,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 123,
"relation": "eq"
},
"max_score": 3.0,
"hits": [
{
"_index": "patio_products-202402082334",
"_id": "198711",
"_score": 3.0,
"_source": {
"id": 198711,
"active": true,
"canBuy": true,
"sectionId": 3233,
"textFacets": [
{
"id": "kolichestvo-yader-processora",
"value": [
"8"
]
},
{
"id": "obem-operativnoy-pamyati",
"value": [
"4-gb"
]
},
{
"id": "obem-vstroennoy-pamyati",
"value": [
"128-gb"
]
},
{
"id": "brand",
"value": [
"samsung"
]
}
]
}
},
{
"_index": "patio_products-202402082334",
"_id": "198712",
"_score": 3.0,
"_source": {
"id": 198712,
"active": true,
"canBuy": true,
"sectionId": 3233,
"textFacets": [
{
"id": "kolichestvo-yader-processora",
"value": [
"8"
]
},
{
"id": "obem-operativnoy-pamyati",
"value": [
"4-gb"
]
},
{
"id": "obem-vstroennoy-pamyati",
"value": [
"256-gb"
]
},
{
"id": "brand",
"value": [
"apple"
]
}
]
}
},
{
"_index": "patio_products-202402082334",
"_id": "198714",
"_score": 3.0,
"_source": {
"id": 198712,
"active": true,
"canBuy": true,
"sectionId": 3233,
"textFacets": [
{
"id": "kolichestvo-yader-processora",
"value": [
"4"
]
},
{
"id": "obem-operativnoy-pamyati",
"value": [
"4-gb"
]
},
{
"id": "obem-vstroennoy-pamyati",
"value": [
"256-gb"
]
},
{
"id": "brand",
"value": [
"samsung"
]
}
]
}
}
]
},
"aggregations": {
"agg_brand": {
"doc_count": 13034,
"brand_filter": {
"doc_count": 168,
"properties": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "zaschita",
"doc_count": 100,
"values": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "ot-vlagi",
"doc_count": 64
},
{
"key": "ot-pyli",
"doc_count": 60
},
{
"key": "ot-bryzg",
"doc_count": 32
},
{
"key": "net",
"doc_count": 25
},
{
"key": "ustoychivost-k-carapinam",
"doc_count": 25
},
{
"key": "udaroprochnost",
"doc_count": 1
}
]
}
},
{
"key": "podderzhka-karty-pamyati",
"doc_count": 63,
"values": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "microsdxc",
"doc_count": 35
},
{
"key": "microsd",
"doc_count": 33
},
{
"key": "microsdhc",
"doc_count": 29
},
{
"key": "net",
"doc_count": 24
},
{
"key": "nm-card",
"doc_count": 4
}
]
}
},
{
"key": "material-korpusa",
"doc_count": 5,
"values": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "plastik",
"doc_count": 5
}
]
}
}
]
}
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment