У меня есть Книжный указатель с полями, похожими на эти:
{
"title": "To Kill a Mockingbird",
"summary": "To Kill a Mockingbird takes place in Alabama during the Depression..",
"type": "book",
"views": 36
},
{
"title": "The Genius of Birds",
"summary": "The Genius Of Birds shines a new light on a genuinely underrated kind..",
"type": "book",
"views": 10
},
{
"title": "Handbook of Bird Biology",
"summary": "The Handbook of Bird Biology is an essential reference for birdwatchers..",
"type": "book",
"views": 27
}
В ElasticSearch v5.1
ниже мой текущий простой запрос, который работает сам по себе:
{
"query": {
"bool": {
"filter": {
"bool": {
"must": [
{
"term": {
"type": "book"
}
}
]
}
},
"must": {
"multi_match": {
"query": "the bird",
"fields": [
"title",
"summary"
]
}
}
}
}
}
(Поиск слов the bird
из полей: title
, summary
, где type
должно быть book
)
Это дает мне простой результат на основев полях title
и summary
.Но мне нужно, чтобы его немного изменили.
Можно ли изменить запрос так, чтобы он выглядел примерно так:
..
"must": {
"multi_match": {
"query": "the bird",
"fields": [
"title^(0.1*views)",
"summary"
]
}
}
..
Я не знаю, как вызвать его в ES, но в основном я хочу увеличить поле (title
) другим полем (view
).
Или в простейшей форме, что-то вроде:
field1^(field2)