tutorial rails ruby-on-rails elasticsearch

ruby on rails - rails - ElasticSearch-Malformed Query(RoR)



elasticsearch rails (1)

Estoy intentando configurar un proyecto existente usando elasticsearch y ruby-on-rails. Puedo poner en marcha el proyecto pero las consultas de búsqueda elástica devuelven varios mensajes de error para mí y para ninguno de mis colegas:

[400] {"error":{"root_cause":[{"type":"parsing_exception","reason":"[and] query malformed, no start_object after query name","line":1,"col":896}],"type":"parsing_exception","reason":"[and] query malformed, no start_object after query name","line":1,"col":896},"status":400}

Esto obviamente me lleva a creer que tiene algo que ver con mi configuración. He instalado la misma versión de ellos (2.4), sin embargo, incluso el comando de configuración que se suministró con el proyecto:

rake environment elasticsearch:import:all DIR=app/models FORCE=y

me da un error de tiempo de espera Lo he verificado y el servicio se está ejecutando. Cualquier ayuda sobre lo que podría estar mal con mi configuración sería muy apreciada ya que estoy en un callejón sin salida durante 2 días en esto.

Gracias por adelantado.

EDITAR: no creo que el problema es con la consulta en sí, ya que esto funciona para mis colegas, sin embargo, es el siguiente:

{: date_range => {: from => Mon, 01 Aug 2016 00: 00: 00 UTC + 00: 00, : to => Mon, 31 Jul 2017 00: 00: 00 UTC + 00: 00 }, : activities_only => nil }, @pupils = [# < Pupil id: 1042, first_name: "Mark", last_name: "Mekhaiel", date_of_birth: "2017-03-19", level: 0, group_id: 95, created_at: "2017-07-31 08:59:59", updated_at: "2017-07-31 09:48:27", username: "m.mekhaiel1", picture: 0, color: 0, archived: false, sub_group_id: nil, score: 20, deleted_at: nil > ], @search = # < PupilCreditSearch: 0x007fc961801308 @interval = : month, @page = 1, @per = 25, @pupil_id = [1042], @date_range = {: from => Mon, 01 Aug 2016 00: 00: 00 UTC + 00: 00, : to => Mon, 31 Jul 2017 00: 00: 00 UTC + 00: 00 }, @queries = [# < Search::Query: 0x007fc964791bb8 @query = nil, @fields = [], @type = : multi_match, @options = {: fields => [], : type => : cross_fields } > ], @filters = [# < Search::Filter: 0x007fc964756db0 @name = : pupil_id, @value = [1042], @type = : terms, @options = {} > ], @aggregations = {: years_created => # < Search::Aggregation: 0x007fc9647a32f0 @type = : date_histogram, @field = : created_at, @options = {: field => : created_at, : type => : date_histogram, : params => {: interval => : year } } > , : months_created => # < Search::Aggregation: 0x007fc9647a30c0 @type = : date_histogram, @field = : created_at, @options = {: field => : created_at, : type => : date_histogram, : params => {: interval => : month } } > , : date_ranges => # < Search::Aggregation: 0x007fc9647a2800 @type = : date_range, @field = : created_at, @options = {: field => : created_at, : type => : date_range, : params => {: keyed => true, : ranges => [{: from => "now/w", : to => "now+1w/w", : key => : this_week }, {: from => "now/M", : to => "now+1M/M", : key => : this_month }, {: from => "now-1w/w", : to => "now-2w/w", : key => : last_week }, {: from => "now-1M/M", : to => "now-2M/M", : key => : last_month }, {: from => "2016-09-01", : to => "2017-08-31", : key => : academic_year }] } } > , : groups => # < Search::Aggregation: 0x007fc9647a2260 @type = : terms, @field = : pupil_id, @options = {: aggs => {: all_dates => # < Search::Aggregation: 0x007fc9647a22d8 @type = : date_histogram, @field = : created_at, @options = {: params => {: interval => : month }, : aggs => {: total_points => # < Search::Aggregation: 0x007fc9647a2440 @type = : sum, @field = : points, @options = {} > , : running_total => # < Search::Aggregation: 0x007fc9647a2350 @type = : cumulative_sum, @field = nil, @options = {: params => {: buckets_path => "total_points" } } > } } > } } > , : options => # < Search::Aggregation: 0x007fc9647a1518 @type = : global, @field = nil, @options = {: aggs => {: filtered => # < Search::Aggregation: 0x007fc9647a1590 @type = : filter, @field = nil, @options = {: params => {: and => [{: range => {: created_at => {: gte => Mon, 01 Aug 2016 00: 00: 00 UTC + 00: 00, : lt => Mon, 31 Jul 2017 00: 00: 00 UTC + 00: 00 } } }, {: terms => {: pupil_id => [1042] } }] }, : aggs => {: categories => # < Search::Aggregation: 0x007fc9647a1b80 @type = : terms, @field = "category", @options = {: ignore => true } > , : topic_ids => # < Search::Aggregation: 0x007fc9647a19a0 @type = : terms, @field = "topic_id", @options = {: ignore => true } > , : learning_objective_ids => # < Search::Aggregation: 0x007fc9647a17c0 @type = : terms, @field = "learning_objective_id", @options = {: ignore => true } > , : completed_activities => # < Search::Aggregation: 0x007fc9647a1608 @type = : terms, @field = : pupil_id, @options = {: aggs => {: activities => # < Search::Aggregation: 0x007fc9647a1680 @type = : filter, @field = nil, @options = {: params => {: and => [{: terms => {: category => [0, 1, 2, 3] } }] } } > } } > } } > } } > }, @request = # < Search::Request: 0x007fc964753548 @params = {: query => {: bool => {: must => [{: match_all => {} }], : filter => [{: terms => {: pupil_id => [1042] } }] } }, : aggs => {: years_created => {: date_histogram => {: field => : created_at, : interval => : year } }, : months_created => {: date_histogram => {: field => : created_at, : interval => : month } }, : date_ranges => {: date_range => {: field => : created_at, : keyed => true, : ranges => [{: from => "now/w", : to => "now+1w/w", : key => : this_week }, {: from => "now/M", : to => "now+1M/M", : key => : this_month }, {: from => "now-1w/w", : to => "now-2w/w", : key => : last_week }, {: from => "now-1M/M", : to => "now-2M/M", : key => : last_month }, {: from => "2016-09-01", : to => "2017-08-31", : key => : academic_year }] } }, : groups => {: terms => {: field => : pupil_id }, : aggs => {: all_dates => {: date_histogram => {: field => : created_at, : interval => : month }, : aggs => {: total_points => {: sum => {: field => : points } }, : running_total => {: cumulative_sum => {: buckets_path => "total_points" } } } } } }, : options => {: global => {}, : aggs => {: filtered => {: filter => {: and => [{: range => {: created_at => {: gte => Mon, 01 Aug 2016 00: 00: 00 UTC + 00: 00, : lt => Mon, 31 Jul 2017 00: 00: 00 UTC + 00: 00 } } }, {: terms => {: pupil_id => [1042] } }] }, : aggs => {: categories => {: terms => {: field => "category" } }, : topic_ids => {: terms => {: field => "topic_id" } }, : learning_objective_ids => {: terms => {: field => "learning_objective_id" } }, : completed_activities => {: terms => {: field => : pupil_id }, : aggs => {: activities => {: filter => {: and => [{: terms => {: category => [0, 1, 2, 3] } }] } } } } } } } } } } >> , @options = # < ReportOptions: 0x007fc96b663258 @search = # < PupilCreditSearch: 0x007fc961801308 @interval = : month, @page = 1, @per = 25, @pupil_id = [1042], @date_range = {: from => Mon, 01 Aug 2016 00: 00: 00 UTC + 00: 00, : to => Mon, 31 Jul 2017 00: 00: 00 UTC + 00: 00 }, @queries = [# < Search::Query: 0x007fc964791bb8 @query = nil, @fields = [], @type = : multi_match, @options = {: fields => [], : type => : cross_fields } > ], @filters = [# < Search::Filter: 0x007fc964756db0 @name = : pupil_id, @value = [1042], @type = : terms, @options = {} > ], @aggregations = {: years_created => # < Search::Aggregation: 0x007fc9647a32f0 @type = : date_histogram, @field = : created_at, @options = {: field => : created_at, : type => : date_histogram, : params => {: interval => : year } } > , : months_created => # < Search::Aggregation: 0x007fc9647a30c0 @type = : date_histogram, @field = : created_at, @options = {: field => : created_at, : type => : date_histogram, : params => {: interval => : month } } > , : date_ranges => # < Search::Aggregation: 0x007fc9647a2800 @type = : date_range, @field = : created_at, @options = {: field => : created_at, : type => : date_range, : params => {: keyed => true, : ranges => [{: from => "now/w", : to => "now+1w/w", : key => : this_week }, {: from => "now/M", : to => "now+1M/M", : key => : this_month }, {: from => "now-1w/w", : to => "now-2w/w", : key => : last_week }, {: from => "now-1M/M", : to => "now-2M/M", : key => : last_month }, {: from => "2016-09-01", : to => "2017-08-31", : key => : academic_year }] } } > , : groups => # < Search::Aggregation: 0x007fc9647a2260 @type = : terms, @field = : pupil_id, @options = {: aggs => {: all_dates => # < Search::Aggregation: 0x007fc9647a22d8 @type = : date_histogram, @field = : created_at, @options = {: params => {: interval => : month }, : aggs => {: total_points => # < Search::Aggregation: 0x007fc9647a2440 @type = : sum, @field = : points, @options = {} > , : running_total => # < Search::Aggregation: 0x007fc9647a2350 @type = : cumulative_sum, @field = nil, @options = {: params => {: buckets_path => "total_points" } } > } } > } } > , : options => # < Search::Aggregation: 0x007fc9647a1518 @type = : global, @field = nil, @options = {: aggs => {: filtered => # < Search::Aggregation: 0x007fc9647a1590 @type = : filter, @field = nil, @options = {: params => {: and => [{: range => {: created_at => {: gte => Mon, 01 Aug 2016 00: 00: 00 UTC + 00: 00, : lt => Mon, 31 Jul 2017 00: 00: 00 UTC + 00: 00 } } }, {: terms => {: pupil_id => [1042] } }] }, : aggs => {: categories => # < Search::Aggregation: 0x007fc9647a1b80 @type = : terms, @field = "category", @options = {: ignore => true } > , : topic_ids => # < Search::Aggregation: 0x007fc9647a19a0 @type = : terms, @field = "topic_id", @options = {: ignore => true } > , : learning_objective_ids => # < Search::Aggregation: 0x007fc9647a17c0 @type = : terms, @field = "learning_objective_id", @options = {: ignore => true } > , : completed_activities => # < Search::Aggregation: 0x007fc9647a1608 @type = : terms, @field = : pupil_id, @options = {: aggs => {: activities => # < Search::Aggregation: 0x007fc9647a1680 @type = : filter, @field = nil, @options = {: params => {: and => [{: terms => {: category => [0, 1, 2, 3] } }] } } > } } > } } > } } > }, @request = # < Search::Request: 0x007fc964753548 @params = {: query => {: bool => {: must => [{: match_all => {} }], : filter => [{: terms => {: pupil_id => [1042] } }] } }, : aggs => {: years_created => {: date_histogram => {: field => : created_at, : interval => : year } }, : months_created => {: date_histogram => {: field => : created_at, : interval => : month } }, : date_ranges => {: date_range => {: field => : created_at, : keyed => true, : ranges => [{: from => "now/w", : to => "now+1w/w", : key => : this_week }, {: from => "now/M", : to => "now+1M/M", : key => : this_month }, {: from => "now-1w/w", : to => "now-2w/w", : key => : last_week }, {: from => "now-1M/M", : to => "now-2M/M", : key => : last_month }, {: from => "2016-09-01", : to => "2017-08-31", : key => : academic_year }] } }, : groups => {: terms => {: field => : pupil_id }, : aggs => {: all_dates => {: date_histogram => {: field => : created_at, : interval => : month }, : aggs => {: total_points => {: sum => {: field => : points } }, : running_total => {: cumulative_sum => {: buckets_path => "total_points" } } } } } }, : options => {: global => {}, : aggs => {: filtered => {: filter => {: and => [{: range => {: created_at => {: gte => Mon, 01 Aug 2016 00: 00: 00 UTC + 00: 00, : lt => Mon, 31 Jul 2017 00: 00: 00 UTC + 00: 00 } } }, {: terms => {: pupil_id => [1042] } }] }, : aggs => {: categories => {: terms => {: field => "category" } }, : topic_ids => {: terms => {: field => "topic_id" } }, : learning_objective_ids => {: terms => {: field => "learning_objective_id" } }, : completed_activities => {: terms => {: field => : pupil_id }, : aggs => {: activities => {: filter => {: and => [{: terms => {: category => [0, 1, 2, 3] } }] } } } } } } } } } }


El problema es con una de las agregaciones, a saber:

:filter => { :and => [...] }

... lo que me lleva a la conclusión de que realmente puede ejecutar elasticsearch 5 y no 2.4, en su máquina, porque esta sintaxis se eliminó en la versión 5 a favor de:

:filter => { :bool => { :must: [...] } }

Verifique la versión elasticsearch con curl localhost:9200 (o el host / puerto real al que se conecta su aplicación).