Searchkick - Самостоятельная проблема наследования таблиц - PullRequest
0 голосов
/ 08 января 2020

Во-первых, этот драгоценный камень довольно крутой ?

Теперь к вопросу. У меня есть модель STI: Asset, которая имеет_мани Components. Components наследуется от Assets.

Актив имеет:

searchkick inheritance: true, index_name: -> { [MultiTenant.current_tenant.tenant_name, model_name.plural, Rails.env].join('_') } Я подозреваю, что, возможно, это проблема - у меня запущено мультитенантное приложение, которое до сих пор отлично работало с СК и ЭС. Мне кажется, что индекс компонента не создается, потому что имя индекса всегда tenant_assets_env et c. Я не уверен, почему model_name не возвращает 'component` для компонента STI.

Я выполнил:

Asset.reindex
Component.reindex

Примечание. Component.reindex возвращает (в конце):

  Asset Import (72.9ms)  {"count":5}
=> true

, что соответствует количеству Asset.

В моем текущем devv env у меня всего 5 активов (2 из которых являются компонентами). Когда я ищу, я получаю:

Asset.search("*") (all 5 results) Component.search("*") (no results) Asset.search("*", where: { type: nil } (the correct 3 results) Asset.search("*", where: { type: 'Component' } (the correct 2 results)

Вот хвостовой конец Component.search("*", debug: true):

Elasticsearch Query
curl http://localhost:9200/xyz_assets_development/_search?pretty -H 'Content-Type: application/json' -d '{"query":{"bool":{"must":{"match_all":{}},"filter":[{"terms":{"type":["component"]}}]}},"timeout":"11s","_source":false,"size":10000}'

Elasticsearch Results
{
  "took": 0,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": 0,
    "max_score": null,
    "hits": [

    ]
  }
}
=> #<Searchkick::Results:0x00007fbc03c331d0
 @klass=
  Asset(id: integer, assetable_id: integer, assetable_type: string, name: string, description: text, notes: text, cost_center: string, tag: string, aasm_state: string, manufacturer: string, year_manufactured: string, slug: string, condition: string, value: integer, created_at: datetime, updated_at: datetime, state_comment: text, flag_utilized: boolean, flag_tag: boolean, model_no: string, serial: string, ownership: string, date_aquired: date, asset_category_id: integer, type: string, state_user_id: integer, aasm_date: datetime, work_orders_count: integer, flags_count: integer, tracks_count: integer, comments_count: integer, uploads_count: integer, transfers_count: integer, assets_count: integer, flag_sour: boolean, company_id: integer, tasks_count: integer, components_count: integer),
 @options=
  {:page=>1,
   :per_page=>10000,
   :padding=>0,
   :load=>true,
   :includes=>nil,
   :model_includes=>nil,
   :json=>false,
   :match_suffix=>"analyzed",
   :highlight=>nil,
   :highlighted_fields=>[],
   :misspellings=>false,
   :term=>"*",
   :scope_results=>nil,
   :total_entries=>nil,
   :index_mapping=>nil,
   :suggest=>nil,
   :scroll=>nil},
 @response={"took"=>0, "timed_out"=>false, "_shards"=>{"total"=>5, "successful"=>5, "skipped"=>0, "failed"=>0}, "hits"=>{"total"=>0, "max_score"=>nil, "hits"=>[]}}>

Я очень зеленый для ES, поэтому я действительно ноль подсказок относительно того, что я вижу здесь.

...