2017-10-13 3 views
0

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/_openPOST 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?

+0

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

Répondre

0

L'analyseur est appliqué au moment de l'indexation. Vous devez d'abord définir votre mappage, puis indexer vos documents.