Projektemben adatokat tárolok aktív rekordmodellben, és index html dokumentumot az elasticsearchben a mapper-attachments beépülő modul. A dokumentumleképezésem így néz ki:
include Elasticsearch::Model
settings index: { number_of_shards: 5 } do
mappings do
indexes :alerted
indexes :title, analyzer: 'english', index_options: 'offsets'
indexes :summary, analyzer: 'english', index_options: 'offsets'
indexes :content, type: 'attachment', fields: {
author: { index: "no"},
date: { index: "no"},
content: { store: "yes",
type: "string",
term_vector: "with_positions_offsets"
}
}
end
end
Lefuttatok egy lekérdezést, hogy még egyszer ellenőrizzem a dokumentum-leképezést és az eredményt:
"mappings": {
"feed_entry": {
"properties": {
"content": {
"type": "attachment",
"path": "full",
"fields": {
"content": {
"type": "string",
"store": true,
"term_vector": "with_positions_offsets"
},
Remekül működik (a fenti típus: 'melléklet'). A html doc-ban tökéletesen tudok keresni.
Teljesítményproblémám van az Activerecord-dal, ami a mysql, és nem igazán kell adatbázisban tárolnom, ezért úgy döntök, hogy áttérek az elasticsearch-ba.
Kísérletet végzek az elasticsearch-persistence< funkcióval /a> drágakő.
A leképezést az alábbiak szerint konfigurálom:
include Elasticsearch::Persistence::Model
attribute :alert_id, Integer
attribute :title, String, mapping: { analyzer: 'english' }
attribute :url, String, mapping: { analyzer: 'english' }
attribute :summary, String, mapping: { analyzer: 'english' }
attribute :alerted, Boolean, default: false, mapping: { analyzer: 'english' }
attribute :fingerprint, String, mapping: { analyzer: 'english' }
attribute :feed_id, Integer
attribute :keywords
attribute :content, nil, mapping: { type: 'attachment', fields: {
author: { index: "no"},
date: { index: "no"},
content: { store: "yes",
type: "string",
term_vector: "with_positions_offsets"
}
}
de amikor lekérdezem a leképezést, valami ilyesmit kaptam:
"mappings": {
"entry": {
"properties": {
"content": {
"properties": {
"_content": {
"type": "string"
},
"_content_type": {
"type": "string"
},
"_detect_language": {
"type": "boolean"
},
ami rossz. meg tudná valaki mondani, hogyan kell leképezni melléklet típussal?
Nagyon hálás vagyok a segítségéért.