2017-02-06 2 views
0

Я получил много документов определяется почти так:Elasticsearch - Поиск НЕ

{ 
    "id": 1, 
    "createdBy": 1379662 
    "content": "foo" 
} 
{ 
    "id": 2, 
    "createdBy": 549674 
    "content": "bar" 
} 

Я пытаюсь получить все документы, где createdBy не в списке:

{ 
    "post_filter":{ 
    "bool":{ 
     "must_not":[ 
      { 
       "term":{ 
       "createdBy":[ 
        1379662, 
        18475 
       ] 
       } 
      } 
     ] 
    } 
    }, 
    "query":{ 
    "match_all":{ 

    } 
    } 
} 

Но с что я все еще получаю документ создать с помощью 1379662. Если я использую только одно значение в моем массиве, это работает

"term":{ 
    "createdBy":[1379662] 
} 

В этом проекте использовалась старая версия ES (1.7.5). Но есть ли решение?

Спасибо за помощь

буфф

ответ

3

Использование terms вместо term

{ 
    "post_filter":{ 
    "bool":{ 
     "must_not":[ 
      { 
       "terms":{    <--- change this 
       "createdBy":[ 
        1379662, 
        18475 
       ] 
       } 
      } 
     ] 
    } 
    }, 
    "query":{ 
    "match_all":{ 

    } 
    } 
} 
+0

Стыдно ... Спасибо за awser меня! – Bouffe

+0

Не беспокойтесь, рад, что это помогло ;-) – Val