Я использовал устаревший _all
для сопоставления поля в Elasticsearch v7.6, и я думаю, что мне следует переключиться на copy_to
согласно документации
Однако я m не уверен, что это правильная реализация, так как некоторые результаты поиска немного отличаются от того, как это было раньше.
старая карта полей
"narrative": {
"type": "object",
"properties": {
"_all": {
"type": "text",
"analyzer": "search_synonyms"
}
}
},
новая карта полей
"narrative": {
"type":"object",
"properties":{
"tor_analysis_result":{
"type": "text",
"analyzer": "search_synonyms",
"copy_to": "full"
},
"status_narrative":{
"type": "text",
"analyzer": "search_synonyms",
"copy_to": "full"
},
"closure_narrative":{
"type": "text",
"analyzer": "search_synonyms",
"copy_to": "full"
},
"tpoc_rejection_notes":{
"type": "text",
"analyzer": "search_synonyms",
"copy_to": "full"
},
"analysis_results":{
"type": "text",
"analyzer": "search_synonyms",
"copy_to": "full"
},
"full": {
"type": "text",
"analyzer": "search_synonyms"
}
}
},
Я также использую narrative.full
вместо narrative.*
при выполнении поиска с несколькими совпадениями с использованием этого поля. Я что-то делаю не так?
EDIT: поисковый запрос
{
_source: [
'baseline',
'cpcr',
'date',
'description',
'dev_stat',
'element',
'event',
'id'
],
track_total_hits: true,
query: {
bool: {
filter: [],
must: [{
multi_match:{
query: "show",
fields: ["cpcr","description","narrative.full","title","tor"],
analyzer: "search_synonyms"
}
}]
}
},
highlight: {
pre_tags: [ '<es_highlight>' ],
post_tags: [ '</es_highlight>' ],
fields: { '*': {} }
},
sort: [],
from: 0,
size: 10
}