Я пытаюсь создать запрос Elasticsearch, который поддерживает одинаковое количество совпадений в разных полях, а не в одном и том же поле. Например:
PUT index1/awe/1
{
"field_1":"blue red",
"field_2":"elephant pig"
}
PUT index1/awe/2
{
"field_1":"blue elephant",
"field_2":"pig red"
}
Я бы хотел, чтобы запрос "синий слон" оценил документ 1 выше, чем документ 2, поскольку документ 1 соответствует словам в обоих полях, тогда как документ 2 соответствует только одному полю.
Я попытался выполнить запрос dis_max, но он оценивает документ 2 выше 1:
GET index1/awe/_search
{
"query": {
"dis_max": {
"queries": [
{
"match": {
"field_1": "blue elephant"
}
},
{
"match": {
"field_2": "blue elephant"
}
}
]
}
}
}
Результаты:
"hits": {
"total": 2,
"max_score": 0.87546873,
"hits": [
{
"_index": "index1",
"_type": "awe",
"_id": "2",
"_score": 0.87546873,
"_source": {
"field_1": "albino elephant",
"field_2": "pig red"
}
},
{
"_index": "index1",
"_type": "awe",
"_id": "1",
"_score": 0.6931472,
"_source": {
"field_1": "albino red",
"field_2": "elephant pig"
}
}
]
}
Спасибо!