Поиск гнезда ElasticSearch несколько типов и все поля
используя гнездо ElasticSearch, у меня возникли проблемы с получением ожидаемых результатов от моих запросов. Мой макет индекса/типа выглядит следующим образом:
- театры (индекс)
- событие (типы)
- театр
- продвижение
- универсальный контент
каждый из этих типов имеет свои собственные поля, и я использую метод Index() NEST для индексирования данных. Я могу убедиться, что он индексируется должным образом by:
- смотрим
http://localhost:9200/theatres/_mapping
- С помощью глава плагин для просмотра данных
Для справки, вот моя конфигурация клиента:
// TODO: Put settings in config
var node = new Uri("http://localhost:9200");
var connSettings = new ConnectionSettings(node);
connSettings.SetDefaultIndex("theatres");
connSettings.ThrowOnElasticsearchServerExceptions();
var client = new ElasticClient(connSettings);
Запрос
Теперь, для запроса, я хочу найти все типы и все полей в индексе. Используя плагин Head, я могу сгенерировать запрос и получить ожидаемые результаты:
используя этот запрос, который он создал, я попробовал следующий запрос гнезда:
var query = "waukesha"; // This would be passed in
var resp = client.Search<dynamic>(s => s
.From(0)
.Take(10)
.Query(qry => qry
.Bool(b => b
.Must(m => m
.QueryString(qs => qs
.DefaultField("_all")
.Query(query))))));
однако это дает мне другой результат. НЕСТ делает что-то за кулисами, о чем я не знаю? Или это не поддерживается?
1 ответов
запрос отсутствует .AllTypes()
вы также можете указать несколько типов, используя .Types("type1", "type1")
Так:
var query = "waukesha"; // This would be passed in
var resp = client.Search<dynamic>(s => s
.AllTypes()
.From(0)
.Take(10)
.Query(qry => qry
.Bool(b => b
.Must(m => m
.QueryString(qs => qs
.DefaultField("_all")
.Query(query))))));