Поиск гнезда 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, я могу сгенерировать запрос и получить ожидаемые результаты: enter image description here

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

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))))));