2015-12-08 5 views
1

Недавно я работал с Elasticsearch 2 и хотел запросить запрос по всем текстовым полям.Поиск по всем полям с подсветкой

GET myindex/mydata/_search 
{ 
    "query": { 
    "simple_query_string": { 
     "query": "Raketenfahrrad" 
    } 
    }, 
    "highlight": { 
    "fields": [ { "*": {} } ] 
    } 
} 

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

{ 
    "query": { 
    "simple_query_string": { 
     "query": "Raketenfahrrad", 
     "fields": ["MainTitle","SubTitle","Author","Content"] 
    } 
    }, 
    "highlight": { 
    "fields": [ { "*": {} } ] 
    } 
} 

Но это не подходит мое требование «Поиск по всем» и потерпит неудачу, когда следующее новое свойство добавляется mydata типа.

ответ

3

От ES 2,0, выдвижение на первый план будет выполняться только на запрашиваемых полей, вы должны установить require_field_match возможность false. Here ссылка на изменение

Попробуйте

{ 
    "query": { 
    "simple_query_string": { 
     "query": "Raketenfahrrad" 
    } 
    }, 
    "highlight": { 
    "fields": { 
     "*": {} 
    }, 
    "require_field_match" : false 
    } 
} 
+0

Нет, это не работает на последней Elasticsearch (версия 2.1.0, Lucene 5.3.1)! Может быть, это ошибка? – Marcel

+0

Я запустил запрос на 1.7, извините, пожалуйста, посмотрите мой обновленный ответ. Он работает над 2.0, это помогает? – ChintanShah25

+0

Эй, еще короче: '" выделить ": {" fields ": {" * ": {" require_field_match ": false}}}' – Marcel

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