L'insensibilité à la casse ne fonctionne pas
Je ne peux pas comprendre pourquoi mes recherches sont sensibles à la casse. Tout ce que j'ai lu dit que les ES est insensible à la casse par défaut. J'ai mappages de spécifier le niveau de l'analyseur pour l'indexation et la recherche, mais il semble que certaines choses sont encore sensibles à la casse - ie, générique:
"query": {
"bool": {
"must": [
{
"wildcard": {
"name": {
"value": "Rae*"
}
}
}
]
}
Cela échoue, mais "rae*" fonctionne comme voulu. J'ai besoin d'utiliser des caractères génériques pour " commence-avec des recherches de type (je présume).
Je suis en utilisant le NID de la .Net app et je suis en précisant les analyseurs quand je créer l'index ainsi:
var settings = new IndexSettings();
settings.NumberOfReplicas = _configuration.Replicas;
settings.NumberOfShards = _configuration.Shards;
settings.Add("index.refresh_interval", "10s");
settings.Analysis.Analyzers.Add(new KeyValuePair<string, AnalyzerBase>("keyword", new KeywordAnalyzer()));
settings.Analysis.Analyzers.Add(new KeyValuePair<string, AnalyzerBase>("simple", new SimpleAnalyzer()));
Dans ce cas c'est à l'aide de la simple analyseur de mais le standard a le même résultat.
La cartographie ressemble à ceci:
name: {
type: string
analyzer: simple
store: yes
}
Tout le monde a des idées quoi de mal ici?
Grâce
source d'informationauteur Jonesie
Vous devez vous connecter pour publier un commentaire.
De la la documentation,
Parce que le terme de recherche n'est pas analysévous aurez essentiellement besoin pour exécuter l'analyse de vous-même avant de générer la requête de la recherche. Dans ce cas, cela signifie que votre terme de recherche doit être en minuscules. Sinon, vous pouvez utiliser
query_string
: