Я использую Completion Suggestester в Elasticsearch, чтобы разрешить частичные запросы на совпадение. В моем индексе (products_index) я хотел бы запросить как поле product_name, так и поле бренд. Вот мои сопоставления:
POST /product_index
mappings: {
products: {
properties: {
brand: {
type: "string",
analyzer: "english"
},
product_name: {
type: "string",
analyzer: "english"
},
id: {
type: "long"
},
lookup_count: {
type: "long"
},
suggest: {
type: "completion",
analyzer: "simple",
payloads: true,
preserve_separators: true,
preserve_position_increments: true,
max_input_length: 50
},
upc: {
type: "string"
}
}
}
}
Вот мои данные:
POST /product_index/products/2
{
id: 2,
brand: "Coca-Cola",
product_name: "Classic Coke",
suggest: {
input: [
"Classic Coke",
"Coca-Cola"
],
output: "Classic Coke - Coca-Cola",
payload: {
id: 2,
product_name: "Classic Coke",
brand: "Coca-Cola",
popularity: 10
},
weight: 0
}
}
И вот мой запрос:
POST /product_index/_search
"suggest": {
"product_suggest": {
"text": 'coca-co',
"completion": {
"field": 'suggest'
}
}
}
Это отлично работает, за исключением того, что я хотел бы присвоить поле product_name более высокое значение, чем поле бренда. Есть ли способ добиться этого? Я рассмотрел статью при использовании запросов bool, но я совершенно не знаком с Elasticsearch и не знаю, как я могу применить что в случае завершения экзаменатора.
Спасибо большое!