[JAVA] Créez votre propre plugin Elasticsearch

introduction

Elasticsearch propose une variété de plugins qui vous permettent de personnaliser et d'améliorer des fonctionnalités telles que la recherche et l'analyse. Il existe de nombreux plugins créés par la communauté ainsi que les plugins officiels inclus dans le projet Elasticsearch. Ici, nous allons vous expliquer comment créer votre propre plug-in.

Types de plug-ins

Les plugins Elasticsearch incluent Analysis Plugin et [Mapper Plugin](https: / /www.elastic.co/guide/en/elasticsearch/plugins/6.5/mapper.html) et ainsi de suite. Avant de créer votre propre plug-in, vous devez être clair sur les fonctionnalités que vous souhaitez ajouter à Elasticseach et quel type de plug-in est cette fonctionnalité.

Par exemple, si vous souhaitez améliorer la fonction de recherche en japonais, divisez-la avec Filtre d'analyse japonais (kuromoji). Si vous avez besoin de traiter davantage les jetons, vous devez créer votre propre plug-in d'analyse (filtre de jetons).

Trouvez du code source utile

Il y a très peu d'informations sur les plugins homebrew Elasticsearch, très limités dans les versions japonaises et récentes.

GitHub propose également une variété de projets de plug-ins, mais seuls quelques-uns sont compatibles avec les versions plus récentes. Donc, tout d'abord, recherchez une implémentation de référence (code source) à partir des plugins officiels d'Elasticsearch (Core Plugins).

Si vous créez votre propre plug-in Analysis, reportez-vous au code source du plug-in dont le nom commence par ʻanalysis-`dans le référentiel suivant.

Structure du projet

Les fichiers requis sont les quatre suivants.

Au lieu d'écrire ces fichiers à partir de zéro, c'est une bonne idée de copier le projet de plug-in référencé, de vous assurer que la construction est réussie, puis de le personnaliser progressivement.

Par exemple, dans le elasticsearch-concatenation-token-filter que j'ai créé, c'est comme suit.

.
├── 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

Implémentation du plug-in

Lorsque le projet est prêt, implémentez le code source du plug-in en Java.

Là encore, les classes Java à implémenter font référence au code source des plugins existants.

Par exemple, elasticsearch-concatenation-token-filter implémente la classe TokenFilter et sa classe Factory.

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 {
  ...
}

Construire et installer

Vérifiez le paramètre pom.xml car vous devez faire correspondre la version d'Elasticsearch que vous utilisez lors de la création du plug-in avec la version d'Elasticsearch que vous installez.

Par exemple, si vous souhaitez utiliser Elasticsearch 6.5.0 pour la génération et l'installation:

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

Construisez avec la commande suivante.

mvn package

Si la sortie BUILD SUCCESS est sortie comme indiqué ci-dessous, cela signifie que la construction a réussi.

[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] ------------------------------------------------------------------------

Utilisez la commande suivante pour effectuer l'installation.

elasticsearch-plugin install file://(Chemin du fichier du plug-in)

Dans la partie (plug file path) ici, spécifiez le chemin du fichier ZIP produit par le mvn package (la partie après leBuilding zip:).

Utilisez le plug-in

Si l'installation réussit, définissez-le en fonction du type de plug-in et essayez de l'utiliser.

Pour le plug-in Analysis, essayez de l'appliquer aux paramètres de l'analyseur pour vous assurer d'obtenir les bons résultats.

Résumé

C'est facile, mais j'ai résumé comment créer et utiliser vous-même les plugins Elasticsearch. Je suis heureux que vous puissiez l'utiliser comme référence.

référence

Recommended Posts

Créez votre propre plugin Elasticsearch
Importez par programme des projets Maven à partir de votre propre plug-in Eclipse
Créez vos propres annotations Java
Créez votre propre serveur simple avec Java et comprenez HTTP
Créez votre propre clavier QMK dans Docker. Volume unique à Windows
Intégrez Elasticsearch dans votre application Rails
Créez votre propre requête de fonction Solr
Utilisez LocationAwareLogger pour votre propre enregistreur
Gérez vos propres annotations en Java
Création d'une série de plugins Elasticsearch (2) Recherche
Comment créer un plug-in Jenkins
Créez votre propre encodage pour String.getBytes ()
Les articles deviennent désordonnés, alors créez une collection de liens de vos propres articles