J'ai un document dans l'index elasticsearch. Voici le document exemplerecherche elasticsearch boost dans feild ayant plusieurs valeurs
DOC1
{
"feild1":["hi","hello","goodmorning"]
"feild2":"some string"
"feild3":{}
}
DOC2
{
"feild1":["hi","goodmorning"]
"feild2":"some string"
"feild3":{}
}
DOC3
{
"feild1":["hi","hello"]
"feild2":"some string"
"feild3":{}
}
Je veux interroger pour feild1 ayant des valeurs "salut" et "bonjour" si les deux est présent alors ce document devrait venir en premier si quelqu'un est présent alors il devrait venir après cela. Par exemple: résultat devrait être dans l'ordre de DOC1, DOC3, DOC2. J'ai essayé avec une requête boost. mais il ne revient pas dans l'ordre que je veux. Voici la requête que j'essaie.
{
"query": {
"bool": {
"must": [
{
"match_phrase": {
"avail_status": true
}
},
{
"bool": {
"should": [
{
"constant_score": {
"filter": {
"terms": {
"feild1": [
"hi"
]
}
},
"boost": 20
}
},
{
"constant_score": {
"filter": {
"terms": {
"feild1": [
"hello"
]
}
},
"boost": 18
}
}
]
}
}
]
}
}
}
cela me renvoie d'abord ces documents ayant "salut", puis ceux ayant "bonjour". Merci d'avance!
avec la requête en cours si vous le pouvez vérifiez que vous pouvez e doc3 et doc1 obtiennent le même score depuis l'encapsulation des filtres dans custom_score igonore TDF/IDF. Je ne vois pas pourquoi ES mettrait doc3 au-dessus de doc1. Si vous utilisez un modèle pour placer un tableau avec plus de champs au-dessus du tableau avec moins de champs avec un boost pour les valeurs correspondantes, je suggère de commencer à regarder le score de la fonction. laissez-moi savoir si cela est le cas pour vous – user3775217
oui je suis à la recherche de seulement cela, document ont un score élevé –
j'ai posté pour score de funtion – user3775217