Created
March 26, 2021 15:16
-
-
Save rukeba/2afa51aa7073d3df05dc8a3d74ee1832 to your computer and use it in GitHub Desktop.
Facet Search in ElasticSearch: Sample Kibana script
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| DELETE /p01 | |
| PUT /p01 | |
| { | |
| "mappings": { | |
| "properties": { | |
| "name": { | |
| "type": "text" | |
| }, | |
| "facet_string": { | |
| "type": "nested", | |
| "properties": { | |
| "facet_name": { | |
| "type": "keyword" | |
| }, | |
| "facet_value": { | |
| "type": "keyword" | |
| } | |
| } | |
| }, | |
| "facet_number": { | |
| "type": "nested", | |
| "properties": { | |
| "facet_name": { | |
| "type": "keyword" | |
| }, | |
| "facet_value": { | |
| "type": "double" | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| # Colors: White, Red, Black | |
| # Sizes: S, M, L | |
| # Fabric: Cotton, Silk | |
| POST /p01/_doc | |
| { | |
| "name": "Black L Cotton", | |
| "facet_string" : [ | |
| { "facet_name": "Color", "facet_value": "Black" }, | |
| { "facet_name": "Size", "facet_value": "L" }, | |
| { "facet_name": "Fabric", "facet_value": "Cotton" } | |
| ], | |
| "facet_number" : [ | |
| { "facet_name": "list_price", "facet_value": 29.88 }, | |
| { "facet_name": "net_price", "facet_value": 20.77 } | |
| ] | |
| } | |
| # select all | |
| POST /p01/_search | |
| { | |
| "query": { | |
| "match_all": {} | |
| } | |
| } | |
| # all aggs only | |
| POST /p01/_search | |
| { | |
| "size": 0, | |
| "aggs": { | |
| "agg_facet_string": { | |
| "nested": { | |
| "path": "facet_string" | |
| }, | |
| "aggs": { | |
| "facet_string": { | |
| "terms": { | |
| "field": "facet_string.facet_name" | |
| }, | |
| "aggs": { | |
| "facet_value": { | |
| "terms": { | |
| "field": "facet_string.facet_value" | |
| } | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "agg_facet_number": { | |
| "nested": { | |
| "path": "facet_number" | |
| }, | |
| "aggs": { | |
| "facet_name": { | |
| "terms": { | |
| "field": "facet_number.facet_name" | |
| }, | |
| "aggs": { | |
| "facet_value": { | |
| "histogram": { | |
| "field": "facet_number.facet_value", | |
| "interval": 5, | |
| "min_doc_count": 1 | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| # search request with single facet filter | |
| # Color = White | |
| POST /p01/_search | |
| { | |
| "query": { | |
| "nested": { | |
| "path": "facet_string", | |
| "query": { | |
| "bool": { | |
| "filter": [ | |
| { | |
| "term": | |
| { | |
| "facet_string.facet_name": "Color" | |
| } | |
| }, | |
| { | |
| "term": { | |
| "facet_string.facet_value": "White" | |
| } | |
| } | |
| ] | |
| } | |
| } | |
| } | |
| }, | |
| "aggs": { | |
| "agg_facet_string": { | |
| "nested": { | |
| "path": "facet_string" | |
| }, | |
| "aggs": { | |
| "facet_string": { | |
| "terms": { | |
| "field": "facet_string.facet_name" | |
| }, | |
| "aggs": { | |
| "facet_value": { | |
| "terms": { | |
| "field": "facet_string.facet_value" | |
| } | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "agg_facet_number": { | |
| "nested": { | |
| "path": "facet_number" | |
| }, | |
| "aggs": { | |
| "facet_name": { | |
| "terms": { | |
| "field": "facet_number.facet_name" | |
| }, | |
| "aggs": { | |
| "facet_value": { | |
| "histogram": { | |
| "field": "facet_number.facet_value", | |
| "interval": 5, | |
| "min_doc_count": 1 | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| # search query with two facet filters | |
| # Color = White OR Red | |
| POST /p01/_search | |
| { | |
| "query": { | |
| "nested": { | |
| "path": "facet_string", | |
| "query": { | |
| "bool": { | |
| "filter": [ | |
| { | |
| "term": | |
| { | |
| "facet_string.facet_name": "Color" | |
| } | |
| }, | |
| { | |
| "terms": | |
| { | |
| "facet_string.facet_value": ["White", "Red"] | |
| } | |
| } | |
| ] | |
| } | |
| } | |
| } | |
| }, | |
| "aggs": { | |
| "agg_facet_string": { | |
| "nested": { | |
| "path": "facet_string" | |
| }, | |
| "aggs": { | |
| "facet_string": { | |
| "terms": { | |
| "field": "facet_string.facet_name" | |
| }, | |
| "aggs": { | |
| "facet_value": { | |
| "terms": { | |
| "field": "facet_string.facet_value" | |
| } | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "agg_facet_number": { | |
| "nested": { | |
| "path": "facet_number" | |
| }, | |
| "aggs": { | |
| "facet_name": { | |
| "terms": { | |
| "field": "facet_number.facet_name" | |
| }, | |
| "aggs": { | |
| "facet_value": { | |
| "histogram": { | |
| "field": "facet_number.facet_value", | |
| "interval": 5, | |
| "min_doc_count": 1 | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| # ( Color = White OR Red ) AND (Size = M) | |
| POST /p01/_search | |
| { | |
| "query": { | |
| "bool": { | |
| "filter": [ | |
| { | |
| "bool": { | |
| "must": [ | |
| { | |
| "nested": { | |
| "path": "facet_string", | |
| "query": { | |
| "bool": { | |
| "filter": [ | |
| { | |
| "term": { | |
| "facet_string.facet_name": "Color" | |
| } | |
| }, | |
| { | |
| "terms": { | |
| "facet_string.facet_value": [ | |
| "White", | |
| "Red" | |
| ] | |
| } | |
| } | |
| ] | |
| } | |
| } | |
| } | |
| }, | |
| { | |
| "nested": { | |
| "path": "facet_string", | |
| "query": { | |
| "bool": { | |
| "filter": [ | |
| { | |
| "term": { | |
| "facet_string.facet_name": "Size" | |
| } | |
| }, | |
| { | |
| "terms": { | |
| "facet_string.facet_value": [ | |
| "M" | |
| ] | |
| } | |
| } | |
| ] | |
| } | |
| } | |
| } | |
| } | |
| ] | |
| } | |
| } | |
| ] | |
| } | |
| }, | |
| "aggs": { | |
| "agg_facet_string": { | |
| "nested": { | |
| "path": "facet_string" | |
| }, | |
| "aggs": { | |
| "facet_string": { | |
| "terms": { | |
| "field": "facet_string.facet_name" | |
| }, | |
| "aggs": { | |
| "facet_value": { | |
| "terms": { | |
| "field": "facet_string.facet_value" | |
| } | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "agg_facet_number": { | |
| "nested": { | |
| "path": "facet_number" | |
| }, | |
| "aggs": { | |
| "facet_name": { | |
| "terms": { | |
| "field": "facet_number.facet_name" | |
| }, | |
| "aggs": { | |
| "facet_value": { | |
| "histogram": { | |
| "field": "facet_number.facet_value", | |
| "interval": 5, | |
| "min_doc_count": 1 | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| # ( Color = White OR Red ) AND (Size = M) AND ( 30 < list_price < 40 ) | |
| POST /p01/_search | |
| { | |
| "query": { | |
| "bool": { | |
| "filter": [ | |
| { | |
| "bool": { | |
| "must": [ | |
| { | |
| "nested": { | |
| "path": "facet_string", | |
| "query": { | |
| "bool": { | |
| "filter": [ | |
| { | |
| "term": { | |
| "facet_string.facet_name": "Color" | |
| } | |
| }, | |
| { | |
| "terms": { | |
| "facet_string.facet_value": [ | |
| "White", | |
| "Red" | |
| ] | |
| } | |
| } | |
| ] | |
| } | |
| } | |
| } | |
| }, | |
| { | |
| "nested": { | |
| "path": "facet_string", | |
| "query": { | |
| "bool": { | |
| "filter": [ | |
| { | |
| "term": { | |
| "facet_string.facet_name": "Size" | |
| } | |
| }, | |
| { | |
| "terms": { | |
| "facet_string.facet_value": [ | |
| "M" | |
| ] | |
| } | |
| } | |
| ] | |
| } | |
| } | |
| } | |
| }, | |
| { | |
| "nested": { | |
| "path": "facet_number", | |
| "query": { | |
| "bool": { | |
| "filter": [ | |
| { | |
| "term": { | |
| "facet_number.facet_name": "list_price" | |
| } | |
| }, | |
| { | |
| "range": { | |
| "facet_number.facet_value": { | |
| "gte": 30, | |
| "lt": 40 | |
| } | |
| } | |
| } | |
| ] | |
| } | |
| } | |
| } | |
| } | |
| ] | |
| } | |
| } | |
| ] | |
| } | |
| }, | |
| "aggs": { | |
| "agg_facet_string": { | |
| "nested": { | |
| "path": "facet_string" | |
| }, | |
| "aggs": { | |
| "facet_string": { | |
| "terms": { | |
| "field": "facet_string.facet_name" | |
| }, | |
| "aggs": { | |
| "facet_value": { | |
| "terms": { | |
| "field": "facet_string.facet_value" | |
| } | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "agg_facet_number": { | |
| "nested": { | |
| "path": "facet_number" | |
| }, | |
| "aggs": { | |
| "facet_name": { | |
| "terms": { | |
| "field": "facet_number.facet_name" | |
| }, | |
| "aggs": { | |
| "facet_value": { | |
| "histogram": { | |
| "field": "facet_number.facet_value", | |
| "interval": 5, | |
| "min_doc_count": 1 | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment