Hey, thanks for getting back to me, but with a little more thought I 
actually figured this out. What I needed was this...

    {
        "query":{
            "function_score":{
                "query":{
                    "bool":{
                        "should": [
                           {
                               "range": {
                                  "allBoost": {
                                     "gt": 0
                                  }
                               }
                           },{
                                "multi_match":{
                                    "query":"some search query",
                                    "fields":[
                                        "id",
                                        "name",
                                        "description",
                                        "category"
                                    ]
                                }
                           }
                        ]
                    }
                },
                "functions":[
                    {
                        "filter":{
                            "range": {
                                "allBoost": {
                                    "gt": 0
                                }
                            }
                        },
                        "script_score":{
                            "script":"doc['allBoost'].value"
                        }
                    },
                    {
                        "filter":{
                            "range": {
                                "allBoost": {
                                    "lte": 0
                                }
                            }
                        },
                        "script_score":{
                            "script":"_score"
                        }
                    }
                ],
                "boost_mode": "replace"
            }
        }
    }

What was missing was the knowledge that you could nest multi field queries 
within bool queries...

On Thursday, April 3, 2014 9:45:06 AM UTC+1, Britta Weber wrote:
>
> Hi, 
>
> I am unsure I got that right - the query in the function_score can be 
> any query, also a bool query. If you want documents that do not match 
> the above query, but some other criterion (for example range query) to 
> be scored with the function_score functions you can just replace the 
> query_string with a 
> "bool" : {"should": [{"query_string:{...}"}, {"range": {...}}]}. 
> Was that your question? 
> If not, could you elaborate a little more on what you want to achieve? 
>
>
>
> On Wed, Apr 2, 2014 at 5:01 PM, Garry Welding 
> <[email protected]<javascript:>> 
> wrote: 
> > I'm currently doing a query that's a mix of multi match and function 
> score. 
> > The important bit of the JSON looks like this: 
> > 
> >         "function_score":{ 
> >             "query":{ 
> >                 "query_string":{ 
> >                     "query":"some query", 
> > 
> > "fields":["id","name","strippedDescription","colourSearch","sizeSearch"] 
> >                 } 
> >             } 
> >         } 
> > 
> > However, I also want to include results that don't necessarily match the 
> > query but have a particular numeric value that's greater than 0. I think 
> a 
> > bool query would do this, but I don't know how to use a bool query with 
> a 
> > function score query. 
> > 
> > I understand that a multi match query is just shorthand for a bool 
> query, 
> > and I could expand out the multi match query into its bool counter-part, 
> > however, I then don't know how I would do function score within that. 
> > 
> > Any ideas? I'm on version 1.1.0 by the way. 
> > 
> > -- 
> > 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] <javascript:>. 
> > To view this discussion on the web visit 
> > 
> https://groups.google.com/d/msgid/elasticsearch/4279a874-eef8-47ec-9f49-f91efed1f851%40googlegroups.com.
>  
>
> > 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/e1d8c456-d62a-498e-a805-ac40e40131d5%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to