Add CONSOLE to post-filter

This commit is contained in:
Isabel Drost-Fromm 2016-05-18 14:31:04 +02:00
parent 125b715e45
commit a3425b4bf8
1 changed files with 37 additions and 8 deletions

View File

@ -5,14 +5,43 @@ The `post_filter` is applied to the search `hits` at the very end of a search
request, after aggregations have already been calculated. Its purpose is
best explained by example:
Imagine that you are selling shirts, and the user has specified two filters:
Imagine that you are selling shirts that have the following properties:
[source,js]
-------------------------------------------------
PUT /shirts
{
"mappings": {
"item": {
"properties": {
"brand": { "type": "keyword"},
"color": { "type": "keyword"},
"model": { "type": "keyword"}
}
}
}
}
PUT /shirts/item/1?refresh
{
"brand": "gucci",
"color": "red",
"model": "slim"
}
------------------------------------------------
// CONSOLE
// TESTSETUP
Imagine a user has specified two filters:
`color:red` and `brand:gucci`. You only want to show them red shirts made by
Gucci in the search results. Normally you would do this with a
<<query-dsl-bool-query,`bool` query>>:
[source,js]
--------------------------------------------------
curl -XGET localhost:9200/shirts/_search -d '
GET /shirts/_search
{
"query": {
"bool": {
@ -23,8 +52,8 @@ curl -XGET localhost:9200/shirts/_search -d '
}
}
}
'
--------------------------------------------------
// CONSOLE
However, you would also like to use _faceted navigation_ to display a list of
other options that the user could click on. Perhaps you have a `model` field
@ -36,7 +65,7 @@ This can be done with a
[source,js]
--------------------------------------------------
curl -XGET localhost:9200/shirts/_search -d '
GET /shirts/_search
{
"query": {
"bool": {
@ -52,8 +81,8 @@ curl -XGET localhost:9200/shirts/_search -d '
}
}
}
'
--------------------------------------------------
// CONSOLE
<1> Returns the most popular models of red shirts by Gucci.
But perhaps you would also like to tell the user how many Gucci shirts are
@ -67,12 +96,12 @@ the `post_filter`:
[source,js]
--------------------------------------------------
curl -XGET localhost:9200/shirts/_search -d '
GET /shirts/_search
{
"query": {
"bool": {
"filter": {
{ "term": { "brand": "gucci" }} <1>
"term": { "brand": "gucci" } <1>
}
}
},
@ -95,8 +124,8 @@ curl -XGET localhost:9200/shirts/_search -d '
"term": { "color": "red" }
}
}
'
--------------------------------------------------
// CONSOLE
<1> The main query now finds all shirts by Gucci, regardless of color.
<2> The `colors` agg returns popular colors for shirts by Gucci.
<3> The `color_red` agg limits the `models` sub-aggregation