Reputation: 1
I am trying to implement elasticsearch on Rails using Searchkick.
The goal is to search on 5 field of order, 2 of which are joined fields, and ideally partial matches using word_middle
For search_data
class Order < ApplicationRecord
searchkick word_middle: [:po_number, :tracking_number] #Works
#searchkick word_middle: [:po_number, :tracking_number, :purchaser.name] #does not work
...
def search_data
attributes.merge(
order_content: self.order_content,
ship_name: self.purchaser,
vendor_name: self.vendor,
po_number: self.po_number,
tracking_number: self.tracking_number
)
end
And in the actual search:
search_query = Order.search "#{search_query}", where: {archived: false},fields: [{po_number: :word_middle}, {tracking_number: :word_middle}]
#search_query = Order.search "#{search_query}", where: {archived: false},fields: [{po_number: :word_middle}, {tracking_number: :word_middle}, {ship_name: :word_middle}] #Did not work
I can get the expected search results for PO_NUMBER and Tracking_Number, but when I try to include ship_name or purchaser.name I don't get any matches including ones that should match on PO and tracking numbers
Upvotes: 0
Views: 108
Reputation: 263
# searchkick word_middle: [:po_number, :tracking_number, :purchaser.name] # does not work
Shouldn't the :purchaser.name
be :ship_name
which matches the field you imported & searched in the ElasticSearch?
Upvotes: 0