Wenn ich Random_score in der Abfrage verwenden, fand ich, dass es kostet 150 Millisekunden, um das Abfrageergebnis zu erhalten (wenn nicht Random_score verwenden, dauert es etwa 250 Millisekunden, um das Ergebnis zu erhalten).Elasticsearch mit Random_score verringert die Leistung
ursprüngliche Abfrage
{
"size": 10,
"query": {
"function_score": {
"query": {
"bool": {
"must": [
{
"query_string": {
"fields": [
"sound_title",
"album_title"
],
"query": "0"
}
}
]
}
},
"functions": [
{
"filter": {
"bool": {
"must": [
{
"term": {
"sound_chapters": 1
}
}
]
}
},
"weight": 1.2
},
{
"field_value_factor": {
"field": "album_playcount",
"modifier": "log",
"missing": "100"
}
}
],
"score_mode": "sum"
}
}
}
Abfrage mit random_score
{
"size": 10,
"query": {
"function_score": {
"query": {
"bool": {
"must": [
{
"query_string": {
"fields": [
"sound_title",
"album_title"
],
"query": "0"
}
}
]
}
},
"functions": [
{
"filter": {
"bool": {
"must": [
{
"term": {
"sound_chapters": 1
}
}
]
}
},
"weight": 1.2
},
{
"field_value_factor": {
"field": "album_playcount",
"modifier": "log",
"missing": "100"
}
},
{
"random_score": {
"seed": "123"
}
}
],
"score_mode": "sum"
}
}
}
gibt es eine Möglichkeit, die Abfrage zu optimieren bessere Leistung zu verbessern?
thx, aber ich verstehe einfach nicht, warum die Leistung so stark sinken kann (von etwa 250ms auf etwa 400ms). Meines Erachtens fügt random_score nur eine zufällige Punktzahl zwischen 0 und 1 zur Hauptzahlung hinzu, und im Allgemeinen ist die Generierung einer Zufallszahl kein zeitaufwändiger Prozess, so dass es nur wenig mehr Zeit braucht, um die random_score -Funktionsbewertung einzubeziehen Hauptzahl. –
@ ThidtcWh ist, weil Random Scoring nicht rein zufällig ist. es ist "konsequent zufälliges" Scoring, was bedeutet, dass Sie für denselben Benutzer dieselben zufälligen Werte erhalten. Diese Art von Aktivität wird Zeit benötigen, um Daten pro Benutzer zu speichern und abzurufen. Ich habe Link für zufällige Scoring in meiner Antwort hinzugefügt, sollten Sie lesen, dass mindestens einmal dann werden Sie besser verstehen, die Verwendung von 'seed.' –
Vielen Dank für Ihre Patienten zu beantworten, jetzt habe ich ein besseres Verständnis von Random_score Prozess –