2017-04-05 1 views
0

Nous utilisons Elasticsearch 1.7 (nous planifions de mettre à niveau très bientôt) et j'essaie d'utiliser l'API Analyze pour comprendre ce que font les différents analyseurs, mais le résultat présenté par elasticsearch n'est pas ce que je attendre.L'API d'analyse ne fonctionne pas pour Elasticsearch 1.7

Si je lance la requête suivante sur notre exemple ElasticSearch

GET _analyze 
{ 
    "analyzer": "stop", 
    "text": "Extremely good food! We had the happiest waiter and the crowd's always flowing!" 
} 

Je vais obtenir ce résultat

{ 
    "tokens": [ 
    { 
    "token": "analyzer", 
    "start_offset": 6, 
    "end_offset": 14, 
    "type": "<ALPHANUM>", 
    "position": 1 
    }, 
    { 
    "token": "stop", 
    "start_offset": 18, 
    "end_offset": 22, 
    "type": "<ALPHANUM>", 
    "position": 2 
    }, 
    { 
    "token": "text", 
    "start_offset": 30, 
    "end_offset": 34, 
    "type": "<ALPHANUM>", 
    "position": 3 
    }, 
    { 
    "token": "extremely", 
    "start_offset": 38, 
    "end_offset": 47, 
    "type": "<ALPHANUM>", 
    "position": 4 
    }, 
    { 
    "token": "good", 
    "start_offset": 48, 
    "end_offset": 52, 
    "type": "<ALPHANUM>", 
    "position": 5 
    }, 
    { 
    "token": "food", 
    "start_offset": 53, 
    "end_offset": 57, 
    "type": "<ALPHANUM>", 
    "position": 6 
    }, 
    { 
    "token": "we", 
    "start_offset": 59, 
    "end_offset": 61, 
    "type": "<ALPHANUM>", 
    "position": 7 
    }, 
    { 
    "token": "had", 
    "start_offset": 62, 
    "end_offset": 65, 
    "type": "<ALPHANUM>", 
    "position": 8 
    }, 
    { 
    "token": "the", 
    "start_offset": 66, 
    "end_offset": 69, 
    "type": "<ALPHANUM>", 
    "position": 9 
    }, 
    { 
    "token": "happiest", 
    "start_offset": 70, 
    "end_offset": 78, 
    "type": "<ALPHANUM>", 
    "position": 10 
    }, 
    { 
    "token": "waiter", 
    "start_offset": 79, 
    "end_offset": 85, 
    "type": "<ALPHANUM>", 
    "position": 11 
    }, 
    { 
    "token": "and", 
    "start_offset": 86, 
    "end_offset": 89, 
    "type": "<ALPHANUM>", 
    "position": 12 
    }, 
    { 
    "token": "the", 
    "start_offset": 90, 
    "end_offset": 93, 
    "type": "<ALPHANUM>", 
    "position": 13 
    }, 
    { 
    "token": "crowd's", 
    "start_offset": 94, 
    "end_offset": 101, 
    "type": "<ALPHANUM>", 
    "position": 14 
    }, 
    { 
    "token": "always", 
    "start_offset": 102, 
    "end_offset": 108, 
    "type": "<ALPHANUM>", 
    "position": 15 
    }, 
    { 
    "token": "flowing", 
    "start_offset": 109, 
    "end_offset": 116, 
    "type": "<ALPHANUM>", 
    "position": 16 
    } 
    ] 
} 

qui n'a pas de sens pour moi. J'utilise l'analyseur d'arrêt, pourquoi les mots "et" et "le" dans le résultat? J'ai essayé de changer l'analyseur d'arrêt en blanc et standard, mais j'obtiens exactement le même résultat que ci-dessus. Il n'y a pas de différence entre eux. Cependant, si je lance exactement la même requête sur une instance d'Elasticsearch 5.x, le résultat ne contient plus "and" et "the" et il semble beaucoup plus que prévu. Est-ce parce que nous utilisons 1.7 ou est-ce quelque chose dans notre configuration d'Elasticsearch qui cause ce problème?

modifier: J'utilise le plugin Sense en chrome pour faire mes requêtes, et le plugin ne supporte pas GET avec un corps de demande il modifie la demande à un POST. Analyse élastique API 1.7 ne semble pas soutenir les requêtes POST :(Si je change la requête comme ceci GET _analyze? Analyseur = stop & text = CE + est + un + test de & cela fonctionne assez

Répondre

2

1.x la syntaxe est différent de celui 2.x and 5.x Selon le 1.x documentation, vous devez utiliser l'API _analyze comme ceci:..

GET _analyze?analyzer=stop 
{ 
    "text": "Extremely good food! We had the happiest waiter and the crowd's always flowing!" 
} 
+0

Je viens de comprendre le problème moi-même J'utilise le plugin Sense en chrome pour faire mes requêtes, et le plugin ne supporte pas GET avec un corps de requête donc il change la requête à un POST Elastic Analyze API 1.7 ne semble pas supporter les requêtes POST :(Si je change la requête comme est GET _analyze? analyzer = stop & text = CE + est + un + test & joli ça marche –

+0

C'est vrai ce que vous dites à propos de Sense, et ce que j'ai fourni dans ma réponse a été testé dans Sense. Si je supprime la partie '? Analyszer = stop' et la place dans le corps, cela ne fonctionnera plus, mais le texte sera analysé, mais pas avec l'analyseur' stop'. –

+0

Oh oui, je le comprends maintenant :) Mais encore beaucoup plus propre en 2+ –