Gozup
Gozup

Reputation: 1003

Tire multi search with RAW Json

I'd like make a multi query on Elasticsearch through Tire but with raw JSON I can to a single request like this

@search = Tire.search('questions', query: {
    function_score: {
      query: { 
        bool: {
            must: [
                {
                    terms: {
                        interests: [2943,5106,3540,1443,3639]
                    }
                }
            ]
        }
      },
      random_score: {}
    }
  })

But for multiple I can't. I'd like somthing like this, but it's not correct for now...

@search = Tire.multi_search 'questions' do


    search :level2 do
        query: {
            function_score: {
              query: { 
                bool: {
                    must: [{
                        terms: {
                        interests: [5090,2938,3062]
                        }}]
                }
              },
              random_score: {}
            }
        }
    end

end

Do you now how I could do to make it work? Thank you

Upvotes: 1

Views: 260

Answers (1)

Gozup
Gozup

Reputation: 1003

I found the solution. Actually, in my case Search method is requiring :payload key in options params

@search = Tire.multi_search 'questions' do

            search( :level1, :payload => {
                                query: {
                                function_score: {
                                  query: { 
                                    bool: {
                                        must: [
                                            {
                                                terms: {
                                                    interests: [2943,5106,3540,1443,3639]
                                                }
                                            },{
                                                term: {
                                                    difficulty: 1
                                                }
                                            }
                                        ]
                                    }
                                  },
                                  random_score: {}
                                }
                             }})

            search( :level2, :payload => {
                                query: {
                                function_score: {
                                  query: { 
                                    bool: {
                                        must: [
                                            {
                                                terms: {
                                                    interests: [5160,2938,3062]
                                                }
                                            },{
                                                term: {
                                                    difficulty: 2
                                                }
                                            }
                                        ]
                                    }
                                  },
                                  random_score: {}
                                }
                             }})

        end 

Upvotes: 1

Related Questions