Je suis nouveau à elasticsearch
et utilisé logstash-jdbc-input
pour charger des données d'un mysql à un serveur de recherche élastique. Voici la config logstashcomment utiliser l'analyseur de mots vides dans elasticsearch
input {
jdbc {
jdbc_connection_string => "jdbc:mysql://localhost:3306/news"
jdbc_user => "root"
jdbc_password => "sunilgarg"
jdbc_validate_connection => true
jdbc_driver_library => "../jars/mysql-connector-java-5.1.21.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
statement => "SELECT * from news"
}
}
output {
stdout {codec => json_lines}
elasticsearch {
"index" => "news"
"document_type" => "news"
"hosts" => "localhost:9200"
"document_id" => "%{id}"
}
}
Après avoir mis toutes les données de la base de données à un serveur de recherche élastique. Je mis à jour les paramètres de l'analyseur en fermant l'index, puis mis à jour l'analyseur en utilisant PORTER
{
"settings": {
"analysis": {
"analyzer": {
"my_english_analyzer": {
"type": "standard",
"max_token_length": 5,
"stopwords": "_english_"
}
}
}
}
}
Après l'ouverture de l'index à l'aide à nouveau /news/_open
POST demande, je peux toujours rechercher à l'aide des mots d'arrêt comme, de, était etc.
Quel est le problème? Est-ce que je fais quelque chose de mal?
vous avez oublié de définir quel champ utiliser cet analyseur. Dans votre modèle de mappage ou votre mappage personnalisé, vous devez définir l'attribut d'analyse de vos champs. – hkulekci