Elastic, настроить корректный поиск и ранжирование объявлений

10 000 руб. за проект
14 марта 2023, 16:48 • 4 отклика • 34 просмотра
На сайте объявлений использутся Elastic в качестве поискового движка.

Но сейчас выдача часто абсолютно некорректная, ранжирование также неудовлетворительное. В топе неподходящие абсолютно товары, много повторяющихся компаний и тд

Необходимо написать правильные параметры для запроса в эластик, сказать как исправить, если нужно, mapping

Конфиг
"index.blocks.read_only_allow_delete": "false",
"index.priority": "1",
"index.query.default_field": [
"*"
],
"index.refresh_interval": "1s",
"index.write.wait_for_active_shards": "1",
"index.analysis.filter.en_US.type": "hunspell",
"index.analysis.filter.en_US.language": "en_US",
"index.analysis.filter.ru_RU.type": "hunspell",
"index.analysis.filter.ru_RU.language": "ru_RU",
"index.analysis.analyzer.default.filter": [
"lowercase",
"ru_RU",
"en_US"
],
"index.analysis.analyzer.default.char_filter": [
"html_strip"
],
"index.analysis.analyzer.default.tokenizer": "standard",
"index.number_of_replicas": "1"

Запрос, который уходит в эластик
"body": {
"query": {
"bool": {
"filter": [
{
"terms": {
"city_id": [
"704"
]
}
}
],
"must": [
{
"multi_match": {
"query": "баня под ключ",
"fields": [
"name^3",
"description"
],
"type": "best_fields",
"tie_breaker": 1
}
}
]
}
},
"aggs": {
"users": {
"terms": {
"field": "user_id",
"size": 10,
"order": {
"max_score": "desc"
}
},
"aggs": {
"max_score": {
"max": {
"script": "_score"
}
}
}
},
"categories": {
"terms": {
"field": "category_id",
"size": 10,
"order": {
"max_score": "desc"
}
},
"aggs": {
"max_score": {
"max": {
"script": "_score"
}
}
}
},
"cities": {
"terms": {
"field": "city_id",
"size": 10
}
}
},
"_source": [
"product_id"
],
"rescore": {
"window_size": 30,
"query": {
"score_mode": "total",
"rescore_query": {
"function_score": {
"script_score": {
"script": {
"source": "if(doc['order_num'].size()!=0) {doc['order_num'].value+_score} else {_score}"
}
}
}
}
}

Файлы