Ich aktualisiere eine Elasticsearch-Instanz von 1.7 auf 5.4.3 und stelle fest, dass die Suchergebnisse zwischen den beiden Systemen unterschiedlich sind, selbst wenn dieselbe Abfrage verwendet wird.Die Ergebnisse der Elasticsearch-Abfrage weichen von 1,7 auf 5,4 ab
Elasticsearch 1.7 Abfrage
{
"query": {
"filtered": {
"query": {
"multi_match": {
"query": "something",
"fields": [
"field1",
"field2",
"field3"
],
"operator": "and"
}
}
}
}
}
Elasticsearch 5.4 Abfrage
{
"query": {
"bool": {
"must": [
{
"multi_match": {
"query": "something",
"fields": [
"field1",
"field2",
"field3"
],
"operator": "and"
}
}
]
}
}
}
Das erste Suchergebnis in Elasticsearch 1.7 wird das Ergebnis in der 71. Elasticsearch 5.4. Wenn ich das gleiche Suchergebnis zwischen 1.7 und 5.4 mit dem _explain
Endpunkt ansehe, sehe ich, dass das Scoring anders gemacht wird. Diese Abfrage enthält auch Synonyme, mit denen die Suchanfrage übereinstimmt.
Erklären für Elasticsearch 1,7
{
"_index": "...",
"_type": "...",
"_id": "...",
"matched": true,
"explanation": {
"value": 9.963562,
"description": "max of:",
"details": [
{
"value": 3.1413355,
"description": "sum of:",
"details": [
{
"value": 1.0609967,
"description": "weight(field1:something in 13) [PerFieldSimilarity], result of:",
"details": [
...remainder removed for brevity
für Erklären Elasticsearch 5,4
{
"_index": "...",
"_type": "...",
"_id": "...",
"matched": true,
"explanation": {
"value": 7.1987557,
"description": "sum of:",
"details": [
{
"value": 7.1987557,
"description": "max of:",
"details": [
{
"value": 6.659632,
"description": "weight(Synonym(field1:something field1:something2 field1:something3) in 113) [PerFieldSimilarity], result of:",
"details": [
...remainder removed for brevity
Fragen
- Jede ob Aus welchem Grund würden meine Suchergebnisse in beiden Versionen für die entsprechende Abfrage so unterschiedlich sein?
- Bedeutet die Tatsache, dass die
_explain
Abfrage für Elasticsearch 1.7 zeigtmax of
höher alssum of
für die Berechnungen, und es ist die gegenüber für Elasticsearch 5.4 zeigt einen Teil des Problems?