2016-04-13 3 views
2

Я новичок в поиске Elasticsearch. У меня есть отображение, которое имеет логическое поле:Найти документы с булевым значением на elasticsearch

{ 
    ... 

    "bool_field": { 
     "type": "boolean" 
    }, 
    ... 
} 

Как можно найти документы на логическое значение без указания имени поля? Я попробовал один из следующих, но без результата:

{ 
    "query": { 
    "match_all": {} 
    }, 
    "filter": { 
    "query": { 
     "query_string": { 
     "query": "true" 
     } 
    } 
    } 
} 

Спасибо!

ответ

2

Не так просто, по умолчанию, потому что boolean fields are not include_in_all (the _all field is used by default by query_string). Это объясняет, почему ваш запрос не работает.

Что вы можете сделать, тем не менее, состоит в том, чтобы использовать copy_to, чтобы создать свой собственный custom _all field и использовать его в query_string.

Что-то вроде этого:

"bool_field": { 
     "type": "boolean", 
     "copy_to": "_all_booleans" 
    } 

А потом

"query_string": { 
    "default_field": "_all_booleans", 
    "query": "true" 
} 

или

"query_string": { 
    "query": "_all_booleans:true" 
} 
+0

Спасибо большое за ответ! Это отличное решение, на мой взгляд, но я забыл указать версию elastichsearch 1.6. Так что, к сожалению, я не подходил. Я выпущу дублирующую версию, чтобы ваш ответ был одобрен. – Serg

+0

Он должен работать с 1.6 ... Я специально не протестировал его в 1.6, но с 1.7.5 я не вижу проблемы. –

+0

Хорошо, я снова проведу проверку – Serg

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