Comment filtrer les champs qui n'existent pas dans elastic search?
Je voudrais vérifier si un champ existe, et de retourner des résultats pour les documents où il n'existe pas. Je suis l'aide de la Golang bibliothèque Élastique: https://github.com/olivere/elastic
J'ai essayé ce qui suit, mais il ne fonctionne pas:
e := elastic.NewExistsFilter("my_tag")
n := elastic.NewNotFilter(e)
filters = append(filters, n)
OriginalL'auteur | 2015-03-30
Vous devez vous connecter pour publier un commentaire.
Ok, je ne vais pas aller en profondeur dans votre langage de requête API. Puisque vous voulez la recherche sur un champ qui n'existe pas (null), utiliser un
exists
filtre à l'intérieur d'unmust
(si vous utilisez bool filtres):Espérons que cette aide!
Grâce
OriginalL'auteur user3775217
Je ne vais pas essayer de vous fournir une solution complète, être que je ne suis pas vraiment familier avec la bibliothèque à l'aide de votre (ou, en effet, le langage go).
Cependant, Lucene ne prend pas en charge pur négatif de l'interrogation que vous avez ici. Lucene a besoin d'être dit que à match. Les négations comme celui-ci servent strictement à interdire les résultats de recherche, mais ne pas correspondre implicitement tout le reste.
Afin de faire ce que vous cherchez, vous pouvez utiliser une requête booléenne de combiner votre filtre pas avec un match tous (que je vois, c'est disponible à la bibliothèque).
Remarque: Comme avec n'importe quand vous utilisez un match tous, les performances peuvent souffrir.
OriginalL'auteur femtoRgon
Vous pouvez créer un bool requête pour not exists comme ceci:
OriginalL'auteur Roee Gavirel