2017-10-18 12 views
0

J'essaie de filtrer sur un champ au sein d'un nested document dans une requête Elasticsearch (ES 5.6.2). Le document imbriqué est lui-même un champ dans un objet interne du document principal. La cartographie ressemble à ceci:Comment interroger un document imbriqué Elasticsearch dans un objet interne?

{ 
    "mappings": { 
     "container": { 
      "properties": { 
       "host": { 
        "properties": { 
         "tags_nested": { 
          "type": "nested", 
          "properties": { 
           "tag_key": { 
            "type": "keyword" 
           }, 
           "tag_val": { 
            "type": "keyword" 
           } 
          } 
         } 
        } 
       } 
      } 
     } 
    } 
} 

Je veux filtrer host.tags_nested.tag_keys, mais je ne peux pas trouver la bonne syntaxe pour accéder au document tags_nested imbriqué dans le host objet interne. J'ai essayé la requête suivante, qui ne renvoie aucun résultat, quand je sais qu'il ya certains qui doivent correspondre:

{ 
    "query": { 
     "nested": { 
      "path": "host.tags_nested", 
      "query": { 
       "bool": { 
        "filter": [ 
         { 
          "term": { 
           "host.tags_nested.tag_key": "example_key" 
          } 
         } 
        ] 
       } 
      } 
     } 
    } 
} 

Selon le ES docs, vous pouvez faire une requête nested pour interroger dans un document imbriqué, par en passant un path qui correspond au nom du champ du document imbriqué. Mais cela ne semble pas fonctionner lorsque le path est dans un objet interne et doit être accessible en utilisant la notation par points.

Des idées?

Répondre

0

Essayez ceci. Term Query recherche les mots exacts que nous spécifions. Donc, pour cela, utilisez fieldname.keyword car le mot clé stocke le texte exact au fur et à mesure que nous les indexons.

{ 
    "query": { 
     "nested": { 
      "path": "host.tags_nested", 
      "query": { 
       "bool": { 
        "filter": [ 
         { 
          "term": { 
           "host.tags_nested.tag_key.keyword": "example_key" 
          } 
         } 
        ] 
       } 
      } 
     } 
    } 
}