Je cherche un moyen de rechercher le nombre de documents ayant un certain champ binaire "non défini" dans un index mappé. Cependant, la requête standard "Existe" ne semble pas fonctionner. Exemple:Elasticsearch: Existe une requête sur un champ binaire
{
"some-index": {
"mappings": {
"some-type": {
"properties": {
"data": {
"type": "binary"
}
}
}
}
}
}
Requête: POST http://.../some-index/some-type/_search?size=1
{
"query":{
"exists":{
"field":"data"
}
}
}
La requête serait au-dessus de retour 0 résultat, peu importe quoi. Je suppose que c'est parce que Elasticsearch ne stocke pas les champs binaires dans la source par défaut, et la requête "Existe" ne regarde que la source.
Existe-t-il une alternative à l'utilisation de la requête Exists, idéalement sans utiliser de champ booléen supplémentaire dans le mappage?
Merci de votre aide. Cela fonctionne-t-il correctement pour les documents qui ont réellement 'field1', c'est-à-dire quand vous interrogez {bool: {must: {exists: {field:" field1 "}}}}? La dernière fois que j'ai essayé, ça n'a pas marché. Ou, comme dans votre exemple, si vous mettez un document qui a à la fois 'field1' et' field2'? Je soupçonne qu'ES ignore simplement le champ binaire sur la requête "Existe". – aaronqli
Vous avez raison, si vous essayez explicitement de rechercher un champ binaire Elastic déclare qu'il n'est pas consultable mais que vous voulez renvoyer des documents qui n'ont pas le champ binaire défini, ce qui est possible en utilisant 'GET binary/type/_count { "requête": { "bool": { "must_not": { "existe": { "champ": "field1"} } } } } 'obtenir le nombre de documents dans un index est Assez simple, alors pouvez-vous soustraire l'un à l'autre? – greggers
Cette requête (et _search) retourne tous les documents, peu importe si le champ binaire est défini ou non :( – aaronqli