2016-08-12 4 views
0

Нужна помощь по конкретному запросу ES. У меня есть объекты в индексе Elastic Search. Пример одного из них (Участник):Эластичный поиск. Поиск по значению подсетей

{ 
     "_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" 
       } 
      ], 
      .... 

Мне нужно найти только объект (ы) с помощью partAttributeList лиц. Например, весь объект участника с SYSNAME = A, VALUE = V1 в том же объекте partAttributeList.

Если я использую усул матчи:

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

Конечно, я найду больше объектов, чем я на самом деле нужно. Пример резервирования объекта, который может быть найден:

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

Вам нужно 'partAttributeList' быть полем« вложенным ». Я предполагаю с вашего поста, что это не так. –

ответ

Смежные вопросы