J'utilise les termes de la facette pour obtenir toutes les valeurs uniques et leur compte pour un champ. Et je reçois de mauvais résultats. Bien que le résultat réel doit être: p> voici ma requête d'échantillon: p>
3 Réponses :
Si réindexing est une option, il serait préférable de modifier la mappage et de marquer ces champs comme Not_Analyzed Vous pouvez utiliser Type de champ multi-champ Si la version analysée du champ est souhaitée: p> "facets" : {
"term" : {
"terms" : {
"script_field" : "_source.your_field"
}
}
}
J'ai essayé le script_field mais cela semblait produire une erreur. Ma requête actuelle ressemble à ceci: Pastebin.com/xwjmm7eq
Cela vous donne probablement une "propriété non résolue d'identifiant: logSource" erreur. C'est parce que le script élastiquearch ne sait pas ce que signifie "logsource". Essayez de le remplacer avec _fields.logsource
Apparaît comme "terme" "org.elasticsearch.search.lookup.fieldlookup@1209016"
Désolé, je voulais dire _field.logsource.value voir elasticsearch.org/guide/reference/ Modules / Scripting.html
Il s'avère que j'ai dû le ré-indexer avec l'index ":" Not_Analyzed ". Ça a fait l'affaire. Merci!
Ivan, super infos, ajout peut-être d'une courte info sur "Multifield" Le champ serait une vue d'ensemble de la solution des "Mes facettes sont cassées comment puis-je résoudre ce problème" problème?
Grande idée, Klement;) J'ai ajouté un exemple multifield à ma réponse.
J'ai brièvement expliqué ce problème et proposé deux solutions ici . J'ai parlé de multiples approches ici. On utilise NOT_Analyzed pour préserver la chaîne telle quelle. Mais ensuite, comme il a l'inconvénient d'être insensible à un cas insensible, une meilleure approche serait d'utiliser le mot-clé Tokenizer + Filtre minuscule P>
Bien que ce lien puisse répondre à la question, il est préférable d'inclure les parties essentielles de la réponse ici et de fournir le lien pour référence. Les réponses uniquement des liaisons peuvent devenir invalides si la page liée change.
J'ai informé ma réponse.
WOW, j'ai aussi reçu ce même problème aujourd'hui, tandis que terme agrégant dans la récente recherche élastique. Après google et une certaine compréhension partielle, a trouvé comment cette indexation geek fonctionne (qui est très simple).
Les requêtes ne peuvent trouver que des termes qui existent réellement dans l'index inversé fort> p> quand Vous indexez la chaîne suivante p> il sera transmis à un analyseur. L'analyseur pourrait l'incliner dans p> avec ses détails de position. Et ces jetons peuvent filtrer à minuscule tels que p> donc, après indexation, la requête de recherche peut voir le ci-dessus 4 uniquement. Pas le mot complet "web-misc / etc / passwd". Pour votre besoin, les suivantes sont mes options que vous pouvez utiliser P> 1.Change the Default Analyzer used by elasticsearch([link][1])
2.If it is not need, just TurnOff the analyzer by setting 'not_analyzed' for the fields you need
3.To convert the already indexed data searchable, re-indexing is the only option
Pourriez-vous mettre à jour la question avec un exemple short i> exemple des données et un exemple court i> exemple de la requête que vous faites, il est donc plus informatif pour les utilisateurs qui arrivent ici des recherches de Google, etc. ?