2016-08-12 3 views
0

Besoin d'aide pour une requête ES spécifique. J'ai des objets dans l'index Elastic Search. Exemple d'un d'entre eux (Participant):Recherche élastique. Recherche par valeur de sous-collection

{ 
     "_id": null, 
     "ObjectID": 6008, 
     "EventID": null, 
     "IndexName": "crmws", 
     "version_id": 66244, 
     "ObjectData":    { 
      "PARTICIPANTTYPE": "2", 
      "STATE": "ACTIVE", 
      "EXTERNALID": "01010111", 
      "CREATORID": 1006, 
      "partAttributeList":    
      [ 
       { 
       "SYSNAME": "A", 
       "VALUE": "V1" 
       }, 
       { 
       "SYSNAME": "B", 
       "VALUE": "V2" 
       }, 
       { 
       "SYSNAME": "C", 
       "VALUE": "V2" 
       } 
      ], 
      .... 

Je dois trouver la seule entité (s) par des entités partAttributeList. Par exemple Entité Participante entière avec SYSNAME = A, VALUE = V1 sur la même entité de partAttributeList.

Si j'utilise des correspondances Usul:

{"match": {"ObjectData.partAttributeList.SYSNAME": "A"}}, 
{"match": {"ObjectData.partAttributeList.VALUE": "V1"}} 

Bien sûr, je vais trouver plus d'objets que j'ai vraiment besoin. Exemple d'objet redondant qui peut être trouvé:

   ... 
       { 
       "SYSNAME": "A", 
       "VALUE": "X" 
       }, 
       { 
       "SYSNAME": "B", 
       "VALUE": "V1" 
       }.. 
+0

Vous avez besoin de 'partAttributeList' pour être un champ' imbriqué'. Je suppose de votre message que ce n'est pas. –

Répondre