Во-первых, этот драгоценный камень довольно крутой ?
Теперь к вопросу. У меня есть модель 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, поэтому я действительно ноль подсказок относительно того, что я вижу здесь.