2015-03-24 2 views
1

У меня есть документ, подобный этому:Упругие Поиск: соответствующие документы, в которых массив содержит это поле

{ 
name: "bob", 
contains: ["a", "b", "c"] 
}, 
{ 
name: "mary", 
contains: ["a", "b"] 
}, 
{ 
name: "Jason", 
contains: ["b"] 
} 

Я хочу, чтобы сделать запрос, чтобы найти всех людей, которые содержат «а» (боб и Марии) , Как написать запрос?

EDIT:

Текущий запрос:

   query: { 
       bool: { 
        must: [ 
         { match: { exists: "yes" }}, 
         { term: {contains: "a"}} 
        ], 
        must_not: [ 
         { match: { status: "removed"}} 
        ] 

       } 
      } 
+0

Найти ответ на этот вопрос еще? – rgin

ответ

0

Термин фильтр/запрос на contains области, такие как {term: {contains: "a"}} получите, что вам нужно. Предполагая, что вы хотите просто соответствовать любому документу, который удовлетворяет, что критерии, полный запрос будет выглядеть так:

{ 
    "query": { 
    "filtered": { 
     "filter": { 
     "term": { 
      "contains": "a" 
     } 
     } 
    } 
    } 
}  

Это работает, потому что массивы значений индексируются по отдельности, а термин запрос найти документы, которые содержат массив содержащий это значение, если запросом поля является список.

+0

Это не работает для меня, к сожалению. – rgin

+0

Я добавил {term: {contains: "a"}} бит в обычный запрос, который у меня был. Надеюсь, это поможет! – yimmy

+0

Все еще ничего не делает для меня. Я должен делать что-то неправильно. – rgin

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

  • Нет связанных вопросов^_^