У меня есть документы типа «устройство», которое я поиск по модели, используя следующий запрос (с использованием КОЛБОЙ & Elasticsearch как API):Elasticsearch - match_phrase сортировать запрос по ИНТУ
match handset
query = {
"query": {
"match_phrase": {
"model": model_name
}
},
"track_scores": True,
"size": 1,
"sort":
[
{"_score": {"order": "desc"}},
{"model": {"order": "asc"}}
]
}
device = es.search(body=query, doc_type='device')
Это возвращает одно устройство с «моделью «ближайший к запрошенному (имя модели).
Пример списка устройств:
[{ "id":482,
"memory":"16",
"model":"iPhone 5s 16GB" },
{ "id":483,
"memory":"32",
"model":"iPhone 5s 32GB" },
{ "id":484,
"memory":"16",
"model":"iPhone 5c 16GB" },
{ "id":486,
"memory":"64",
"model":"iPhone 6 64GB" },
{ "id":485,
"memory":"32",
"model":"iPhone 6 32GB" }]
Как я могу изменить его так, чтобы вернуть устройство с самой низкой памятью?
>>> query.query.match_phrase.model = 'iPhone 5s'
>>> device = es.search(body=query, doc_type='device')
{ "id":482,
"memory":"16",
"model":"iPhone 5s 16GB" }
>>> query.query.match_phrase.model = 'iPhone 6'
>>> device = es.search(body=query, doc_type='device')
{ "id":485,
"memory":"32",
"model":"iPhone 6 32GB" }
Любые подсказки высоко оценены.
Это работает, приветствия. Теперь, имея «Samsung S6» и «Samsung S6 Edge» в поиске «Samsung S6», я сначала получаю Edge. Любая подсказка о том, как это исправить? –