Gewichtete Zufallsstichprobe in Elasticsearch

Ich muss eine Zufallsstichprobe aus einem ElasticSearch-Index erhalten, d. H. Eine Abfrage ausgeben, mit der einige Dokumente aus einem bestimmten Index mit gewichteter Wahrscheinlichkeit abgerufen werden.Wj/ΣWi (woWj ist ein Gewicht der Reihej undWj/ΣWi ist eine Summe der Gewichte aller Dokumente in dieser Abfrage.

erzeit habe ich die folgende Abfrage:

GET products/_search?pretty=true

{"size":5,
  "query": {
    "function_score": {
      "query": {
        "bool":{
          "must": {
            "term":
              {"category_id": "5df3ab90-6e93-0133-7197-04383561729e"}
          }
        }
      },
      "functions":
        [{"random_score":{}}]
    }
  },
  "sort": [{"_score":{"order":"desc"}}]
}

It gibt 5 Elemente aus der ausgewählten Kategorie nach dem Zufallsprinzip zurück. Jeder Artikel hat ein Feldweight. Also muss ich wohl @ benutz

"script_score": {
  "script": "weight = data['weight'].value / SUM; if (_score.doubleValue() > weight) {return 1;} else {return 0;}"
}

wie beschriebenHie.

Ich habe die folgenden Probleme:

Was ist der richtige Weg, um dies zu tun? Muss ich @ aktivierDynamic Scripting?Wie wird die Gesamtsumme der Abfrage berechnet?

Vielen dank für Deine Hilfe

Antworten auf die Frage(4)

Ihre Antwort auf die Frage