Je veux ajouter un poids pour chaque match (au lieu d'ajouter un poids une fois que si l'un de ceux remplis):ElasticSearch: Ajouter poids pour chaque match de tableau
Avoir docs comme ceci:
[{
"username": "xyz",
"categories": [
{
"category.id": 1
},
{
"category.id": 2
}
]
}, {
"username": "xyz2",
"categories": [
{
"category.id": 1
}
]
}]
Et actuellement, j'ai cette requête:
{
"query": {
"filtered": {
"query": {
"function_score": {
"query": {
"bool": {}
},
"score_mode": "sum",
"boost_mode": "sum",
"functions": [
{
"weight": 1.1,
"filter": {
"terms": {
"category.id": [
1,
2
]
}
}
}
]
}
},
"filter": {
"bool": {
"must_not": [
{
"terms": {
"_id": [
8
]
}
}
]
}
}
}
},
"from": 0,
"size": 30
}
Avec cette requête, les deux entrées recevront un poids de 1.1
, mais je veux la première entrée pour obtenir 2 * 1.1
parce que 2 les catégories sont appariées. Comment pourrais-je réaliser cela?
EDIT: Désolé, j'ai manqué d'ajouter la version de recherche élastique. C'est 1.7.2
.
Quelle version ES est-ce? –
merci de mentionner que, édité en post. C'est '1.7.2' – Dennis