[JAVA] Erstellen Sie Ihr eigenes Elasticsearch-Plugin

Einführung

Elasticsearch verfügt über eine Vielzahl von Plugins, mit denen Sie Funktionen wie Suche und Analyse anpassen und verbessern können. Es gibt viele Plugins, die von der Community erstellt wurden, sowie die offiziellen Plugins, die im Elasticsearch-Projekt enthalten sind. Hier erklären wir Ihnen, wie Sie Ihr eigenes Plug-In erstellen.

Arten von Plug-Ins

Zu den Elasticsearch-Plugins gehören Analyse-Plugin und [Mapper-Plugin](https: / /www.elastic.co/guide/en/elasticsearch/plugins/6.5/mapper.html) und so weiter. Bevor Sie Ihr eigenes Plug-In erstellen, müssen Sie sich darüber im Klaren sein, welche Funktionen Sie zu Elasticseach hinzufügen möchten und welche Art von Plug-In diese Funktion ist.

Wenn Sie beispielsweise die Suchfunktion auf Japanisch verbessern möchten, teilen Sie sie mit Japanischer (kuromoji) Analysefilter. Wenn Sie die erstellten Token weiter verarbeiten müssen, müssen Sie Ihr eigenes Analyse-Plug-In (Token-Filter) erstellen.

Finden Sie hilfreichen Quellcode

Es gibt nur sehr wenige Informationen zu Homebrew-Elasticsearch-Plugins, die in japanischen und neueren Versionen sehr begrenzt sind.

GitHub hat auch eine Vielzahl von Plug-In-Projekten, aber nur wenige sind mit neueren Versionen kompatibel. Suchen Sie zunächst nach einer Referenzimplementierung (Quellcode) aus den offiziellen Elasticsearch-Plugins (Core Plugins).

Wenn Sie ein eigenes Analyse-Plug-In erstellen, lesen Sie den Quellcode des Plug-Ins, dessen Name im folgenden Repository mit "Analyse" beginnt.

Projektstruktur

Die erforderlichen Dateien sind die folgenden vier.

Anstatt diese Dateien von Grund auf neu zu schreiben, ist es eine gute Idee, das referenzierte Plug-In-Projekt zu kopieren, sicherzustellen, dass der Build erfolgreich ist, und es dann schrittweise anzupassen.

Im von mir erstellten elasticsearch-concatenation-token-filter sieht es beispielsweise wie folgt aus.

.
├── README.md
├── pom.xml
├── src
│   └── main
│       ├── assemblies
│       │   └── plugin.xml
│       ├── java
│       │   └── com
│       │       └── github
│       │           └── ryohashimoto
│       │               └── elasticsearch
│       │                   ├── index
│       │                   │   └── analysis
│       │                   │       ├── ConcatenationTokenFilter.java
│       │                   │       └── ConcatenationTokenFilterFactory.java
│       │                   └── plugin
│       │                       └── analysis
│       │                           └── ConcatenationTokenFilterPlugin.java
|        └── resources
|            └── plugin-descriptor.properties
└── target

Implementierung des Plugins

Wenn das Projekt fertig ist, implementieren Sie den Quellcode des Plug-Ins in Java.

Auch hier beziehen sich die zu implementierenden Java-Klassen auf den Quellcode vorhandener Plugins.

Als Beispiel implementiert elasticsearch-concatenation-token-filter die TokenFilter-Klasse und ihre Factory-Klasse.

public class ConcatenationTokenFilterPlugin extends Plugin implements AnalysisPlugin {
    @Override
    public Map<String, AnalysisProvider<TokenFilterFactory>> getTokenFilters() {
        return singletonMap("concatenation", ConcatenationTokenFilterFactory::new);
    }
}
public class ConcatenationTokenFilterFactory extends AbstractTokenFilterFactory {

    public ConcatenationTokenFilterFactory(IndexSettings indexSettings, Environment environment, String name, Settings settings) {
		super(indexSettings, name, settings);
	}

	@Override
    public TokenStream create(TokenStream tokenStream) {
        return new ConcatenationTokenFilter(tokenStream);
    }
}
public class ConcatenationTokenFilter extends TokenFilter {
  ...
}

Erstellen und installieren

Überprüfen Sie die Einstellung "pom.xml", da Sie die Version von Elasticsearch, die Sie beim Erstellen des Plug-Ins verwenden, mit der Version von Elasticsearch abgleichen müssen, die Sie installieren.

Wenn Sie beispielsweise Elasticsearch 6.5.0 sowohl zum Erstellen als auch zum Installieren verwenden möchten:

<elasticsearch.version>6.5.0</elasticsearch.version>

Erstellen Sie mit dem folgenden Befehl.

mvn package

Wenn die Ausgabe "BUILD SUCCESS" wie unten gezeigt ausgegeben wird, bedeutet dies, dass der Build erfolgreich war.

[INFO] Building zip: /Users/ryo/Repos/elasticsearch-concatenation-token-filter/target/releases/elasticsearch-concatenation-token-filter-6.5.0.1.zip
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  3.833 s
[INFO] Finished at: 2018-12-09T23:22:14+09:00
[INFO] ------------------------------------------------------------------------

Verwenden Sie den folgenden Befehl, um die Installation durchzuführen.

elasticsearch-plugin install file://(Plugin-Dateipfad)

Geben Sie hier im Teil (Plug-File-Pfad) den Pfad der ZIP-Datei an, die vom mvn-Paket ausgegeben wird (der Teil nach dem Building zip:).

Verwenden Sie das Plug-In

Wenn die Installation erfolgreich ist, stellen Sie sie entsprechend der Art des Plug-Ins ein und versuchen Sie es zu verwenden.

Versuchen Sie, das Analyse-Plug-In auf die Analyseeinstellungen anzuwenden, um sicherzustellen, dass Sie die richtigen Ergebnisse erhalten.

Zusammenfassung

Es ist einfach, aber ich habe zusammengefasst, wie Sie Elasticsearch-Plugins selbst erstellen und verwenden. Ich bin froh, wenn Sie es als Referenz verwenden können.

Referenz

Recommended Posts

Erstellen Sie Ihr eigenes Elasticsearch-Plugin
Importieren Sie Maven-Projekte programmgesteuert aus Ihrem eigenen Eclipse-Plug-In
Erstellen Sie Ihre eigenen Java-Anmerkungen
Erstellen Sie mit Java Ihren eigenen einfachen Server und verstehen Sie HTTP
Erstellen Sie in Docker Ihre eigene Tastatur-QMK. Für Windows einzigartiges Volume
Integrieren Sie Elasticsearch in Ihre Rails-App
Erstellen Sie Ihre eigene Solr-Funktionsabfrage
Verwenden Sie LocationAwareLogger für Ihren eigenen Logger
Behandeln Sie Ihre eigenen Anmerkungen in Java
Erstellen einer Elasticsearch Plugin Series (2) Suche
So erstellen Sie ein Jenkins-Plug-In
Erstellen Sie Ihre eigene Codierung für String.getBytes ()
Artikel werden unordentlich, machen Sie also eine Link-Sammlung Ihrer eigenen Artikel