Я не очень разбираюсь в ElasticSearch и хотел бы узнать, как улучшить поиск на основе определенного целочисленного значения.
Это пример документа:
{
"_index": "links",
"_type": "db1",
"_id": "mV32vWcBZsblNn1WqTcN",
"_score": 8.115617,
"_source": {
"url": "example.com",
"title": "Example website",
"description": "This is an example website, used for various of examples around the world",
"likes": 9,
"popularity": 543,
"tags": [
{
"name": "example",
"votes": 5
},
{
"name": "test",
"votes": 2
},
{
"name": "testing",
"votes": 1
}
]
}
}
Теперь в этом конкретном поиске акцент делается на tags
, и я хотел бы знать, как увеличить _score
и умножить его на целое число в votes
в tags
.
Если это невозможно (или очень трудно достичь), я просто хотел бы знать, как повысить _score
на votes
(не под tags
)
Пример, добавить 0,1 к_score
для каждого целого числа в votes
Это текущий поисковый запрос, который я использую (для поиска по тегам только ):
{
"query": {
"nested": {
"path": "tags",
"query": {
"bool":{
"should":{
"match":{
"tags.name":"example,testing,something else"
}
}
}
}
}
}
}
Я не мог найти много онлайн, и надеюсь, что кто-то может помочь мне.
Как мне увеличить _score
с целочисленным значением?
Обновление
Для получения дополнительной информации, вот сопоставление:
{
"links": {
"mappings": {
"db1": {
"properties": {
"url": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"title": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"description": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"likes": {
"type": "long"
},
"popularity": {
"type": "long"
},
"tags": {
"type": "nested",
"properties": {
"name": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"votes": {
"type": "long"
}
}
}
}
}
}
}
}
Обновление 2
Изменено tags.likes
/ tags.dislikes
на tags.votes
и добавлено свойство nested
к tags