Une requête AND simple avec Elasticsearch
Je suis en train de faire une requête simple pour les deux champs spécifiés, et le manuel, et google s'avère être d'un peu d'aide. Exemple ci-dessous devrait faire assez clair ce que je veux faire.
{
"query": {
"and": {
"term": {
"name.family_name": "daniel",
"name.given_name": "tyrone"
}
}
}
}
Comme un bonus question, pourquoi faut-il trouver des "Daniel Tyrone" avec "daniel", mais PAS si je la recherche pour "Daniel". Il se comporte comme un vraiment bizarre anti casse de recherche.
source d'informationauteur Alexander Morland
Vous devez vous connecter pour publier un commentaire.
Edit: mis à Jour, désolé. Vous avez besoin d'un distinct
Term
objet pour chaque champ, à l'intérieur d'un Bool requête:Terme requêtes ne sont pas analysés par ElasticSearch, ce qui les rend sensibles à la casse. Un Terme de la requête, dit à ES "recherchez exacte de ce jeton à l'intérieur de votre index, y compris des cas et des signes de ponctuation".
Si vous voulez compte de la casse, vous pouvez ajouter un mot-clé + minuscules filtre de votre analyseur. Sinon, vous pouvez utiliser une requête qui analyse votre texte au moment de la requête (comme un
Match
requête)Edit2: Vous pouvez également utiliser Et ou Bool filtres trop.
J'ai trouvé une solution pour au moins plusieurs comparaisons texte sur le même champ:
Et j'ai trouvé cela pour de multiples domaines, est-ce la bonne manière?
Si la composition du json en PHP, ces 2 exemples travaillé pour moi.
$activeFilters est juste une chaîne séparée par des virgules, comme: 'attractions, limpopo'