2017-02-15 4 views
0

Ich wende mich an Sie mit einer Anfrage, um das Problem zu lösen. Implementiert das Projekt elasticsearch. Ich habe hier eine Art, die nicht so funktioniert, wie es sollte. Ich hoffe, dass Sie mir helfen werden, dieses Problem zu lösen.Elasticsearch schlechte Sortierung mit UTF8 Werten

Hier ist mein Mapping:

http://pastebin.com/qgiJ9hH1

Hier ist der Körper an die Elastica gesendet:

{ 
    "body": { 
        "from", "0", 
        "fize": "25" 
        "sort": { 
            "spolka_text" { 
                "order": "desc" 
            } 
        } 
        "query": { 
            "bool": { 
                "should": [{ 
                        "term": { 
                            "wprowadzajacy_value": 6001 
                        } 
                    }] 
                "must": [{ 
                        "term": { 
                            "deleted": 0 
                        } 
                    }, { 
                        "range": { 
                            "data_wprowadzenia_text" { 
                                "Gte": "2012-01-01" 
                                "Lte", "2017-02-15" 
                            } 
                        } 
                    }, { 
                        "terms": { 
                            "proces_platnosci_value" [ "4"] 
                        } 
                    }] 
            } 
        } 
    } 
} 

Und hier ist das Ergebnis:

Und so

https://ibin.co/3CSkKOqYujF9.png es sollte sein:

https://ibin.co/3CSkikjWU8Tg.png

I`m mit Elasticsearch in Version 5.2.

Irgendwelche Ideen, warum ich diese Antwort bekommen habe?

Ok löste ich Problem mit Hilfe und schlagen von @Mysterion:

Hier ist neue Zuordnung:

http://pastebin.com/wWkmjGs7

Und neue Abfrage:

{ 
    "body": { 
     "from", "0", 
     "fize": "25" 
     "sort": { 
      "spolka_text.raw" { 
       "order": "desc" 
      } 
     } 
     "query": { 
      "bool": { 
       "should": [{ 
         "term": { 
          "wprowadzajacy_value": 6001 
         } 
        }] 
       "must": [{ 
         "term": { 
          "deleted": 0 
         } 
        }, { 
         "range": { 
          "data_wprowadzenia_text" { 
           "gte": "2012-01-01" 
           "lte", "2017-02-15" 
          } 
         } 
        }, { 
         "terms": { 
          "proces_platnosci_value" [ "4"] 
         } 
        }] 
      } 
     } 
    } 
} 
+0

Bevor Sie fielddata aktivieren, prüfen, warum Sie ein Textfeld für Aggregationen verwenden, Sortieren oder in einem Skript. Es macht normalerweise keinen Sinn, dies zu tun. – Mysterion

+0

Ich verstehe nicht, was Sie im Kopf haben jetzt – rad11

+0

Sie versuchen, auf einem Textfeld zu sortieren, die seltsame Idee im Allgemeinen ist, denke ich, warum willst du nicht auf Zeichenfolge sortieren? – Mysterion

Antwort

1

Allgemeinen Sortierung auf einem Text Feld ist eine schlechte Idee. Also, ich werde empfehlen, fielddata() zu deaktivieren und fügen Sie entweder zusätzliches Feld vom Typ keyword, die für die Sortierung mit der Kombination der copy_to verwendet werden.

z.

PUT my_index 
{ 
    "mappings": { 
    "my_type": { 
     "properties": { 
     "my_field": { 
      "type": "text", 
      "fields": { 
      "keyword": { 
       "type": "keyword" 
      } 
      } 
     } 
     } 
    } 
    } 
} 

und verwenden my_field für die Suche, und my_field.keyword zum Sortieren/Aggregationen

Verwandte Themen