2015-03-04 4 views
5

Ich untersuche einfache Möglichkeiten, in Java einige leichte Service- und Datenzugriffsebenen auf ElasticSearch zu definieren. Meine POJO-Datenobjekte haben in camelCase natürlich Eigenschaftsnamen, aber ich frage mich, ob ich camelCase für die Feldnamen in den ElasticSearch-Typzuordnungen verwenden soll. In der Daten-Repository-Welt und insbesondere in traditionellen RDBMS sind Feldnamen definitiv nicht auf dem Prüfstand. Wenn ich mich nicht irre, scheint es in der NoSql-Welt einen Trend zu geben, Unterstriche in Feldnamen zu verwenden, z. Vorname. Ist das eine übliche Praxis für ElasticSearch? Wenn ja, bedeutet das, dass ich einen auf Jackson basierenden Konvertierungsdienst konfigurieren muss, der in der Lage ist, zwischen den camelCase- und den unterstrichenen Feldnamen hin- und herzuwechseln?Best Practices für Feldnamen in ElasticSearch

Antwort

2

Tun Sie einfach das Beste für Ihre Anwendung. Wenn ein Mapping-Service implementiert wird, entsteht ein Overhead, der insbesondere bei großen Datenmengen Verzögerungen verursacht. Ich verwende es hauptsächlich mit JavaScript-Anwendungen und ich benutze CamelCase.

+0

Wenn ich Unterstriche in den Index/Typ-Feldnamen verwende, muss ich zwischen den camelCase Java-Eigenschaften und den Unterstreichungs-basierten ElasticSearch-Feldnamen hin und her mappen, es gibt keinen Weg darum herum. Annotation-basierte Frameworks wie Jackson sollten dies hoffentlich relativ schmerzlos machen. –

+1

Ja, wenn Sie Unterstriche verwenden, würden Sie. Also benutze keine Unterstriche. Wie gesagt, mach das Beste für die Anwendung. Mit elasticsearch gibt es keine Konventionen oder Best Practices bei der Benennung. Verwenden Sie die Konventionen, die für Ihre App am besten geeignet sind. ES ist darauf ausgelegt, große Datenmengen sehr schnell zu verarbeiten. Das Hinzufügen eines Mapping-Layers läuft diesem Zweck entgegen, da es alles verlangsamt. –