The behavior of "should" with no "must" or "must_not" clauses is the
documented behavior, inherited from the underlying Lucene engine - it's not
a bug.
If you're desperate to return results which aren't likely to be respondent
to the query (which is usually the case when you have only a single search
term and no documents match it), you could add a "must": [{ "match_all":{}
}] - that shouldn't add significant overhead.
--
Les Barstow, Senior Software Engineer
Return Path, Inc.
On Fri, Mar 13, 2015 at 2:38 AM, parq <[email protected]> wrote:
> I agree. But then the only way to use dynamically generated "should
> clause(s)" is to include a mandatory "must clause" with some identity
> function i.e. added overhead. I also tried "minimum_should_match" of 0,
> but it gave 0 documents in result. I was expecting every document in the
> index as result.
>
> Is it a bug or feature? Should it be reported?
>
>
> On Thursday, March 12, 2015 at 9:20:12 PM UTC+1, Les Barstow wrote:
>>
>> "should" has a "minimum_should_match" of 1 when there is no "must" or
>> "must_not". With only a single "should", that makes it act like "must".
>>
>> On Thu, Mar 12, 2015 at 9:08 AM, parq <[email protected]> wrote:
>>
>>> However, the following query returns the expected document,
>>>
>>> curl -XGET "http://localhost:9200/test-cbx/bug/_search" -d'
>>> {
>>> "query": {
>>> "filtered": {
>>> "query": {
>>> "bool": {
>>> "must": [
>>> {
>>> "match": {
>>> "type": {
>>> "query": "some type"
>>>
>>> }
>>> }
>>> }
>>> ],
>>> "should": [
>>> {
>>> "match": {
>>> "country": {
>>> "query": "de"
>>>
>>> }
>>> }
>>> }
>>> ]
>>> }
>>> },
>>> "filter": {
>>> "term": {
>>> "type": "some type"
>>> }
>>> }
>>> }
>>> }
>>> }'
>>>
>>> May be it is like "should clause" does not work without a "Must clause"
>>> in query?
>>>
>>>
>>> On Thursday, March 12, 2015 at 2:54:00 PM UTC+1, parq wrote:
>>>>
>>>> Hello all,
>>>>
>>>> We have a single document in an index:
>>>>
>>>> $ curl -XGET "http://localhost:9200/test-cbx/bug/_search?q=*" gives
>>>> us the following response
>>>> {"took":2,"timed_out":false,"_shards":{"total":5,"successful
>>>> ":5,"failed":0},"hits":{"total":1,"max_score":1.0,"
>>>> hits":[{"_index":"test-cbx","_type":"bug","_id":"1","_score"
>>>> :1.0,"_source":
>>>> {
>>>> "country": "lu",
>>>> "type": “some type"
>>>> }}]}}
>>>>
>>>> And the following two queries give no results, even though it’s a
>>>> should clause:
>>>>
>>>> $ curl -XGET "http://localhost:9200/test-cbx/bug/_search" -d'
>>>> {
>>>> "query": {
>>>> "filtered": {
>>>> "query": {
>>>> "match_all": {}
>>>> },
>>>> "filter": {
>>>> "bool": {
>>>> "should": {
>>>> "term": {
>>>> "country": "de"
>>>> }
>>>> }
>>>> }
>>>> }
>>>> }
>>>> }
>>>> }'
>>>>
>>>> $ curl -XGET "http://localhost:9200/test-cbx/bug/_search" -d'
>>>> {
>>>> "query": {
>>>> "filtered": {
>>>> "query": {
>>>> "bool": {
>>>> "should": [
>>>> {
>>>> "match": {
>>>> "country": {
>>>> "query": "de"
>>>>
>>>> }
>>>> }
>>>> }
>>>> ]
>>>> }
>>>> },
>>>> "filter": {
>>>> "term": {
>>>> "type": “some type"
>>>> }
>>>> }
>>>> }
>>>> }
>>>> }'
>>>>
>>>> What is the preferred way to approach the bool query? Filter or the
>>>> query?
>>>>
>>>>
>>>> Regards,
>>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "elasticsearch" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to [email protected].
>>> To view this discussion on the web visit https://groups.google.com/d/
>>> msgid/elasticsearch/58b7f178-4c09-4de7-9d38-c7aa3bc39a05%
>>> 40googlegroups.com
>>> <https://groups.google.com/d/msgid/elasticsearch/58b7f178-4c09-4de7-9d38-c7aa3bc39a05%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>> --
> You received this message because you are subscribed to the Google Groups
> "elasticsearch" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/elasticsearch/a1c2a083-c8d2-4108-a91f-b87a8e8d500d%40googlegroups.com
> <https://groups.google.com/d/msgid/elasticsearch/a1c2a083-c8d2-4108-a91f-b87a8e8d500d%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>
> For more options, visit https://groups.google.com/d/optout.
>
--
You received this message because you are subscribed to the Google Groups
"elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/elasticsearch/CAOppbCXbvoVH6F%2B%3DcfBRkt7YH6-WSgCZeJvYp-ZX_DV6GF4_Lw%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.