Я создал успешное соединение с ES, а затем написал свой json-запрос. Теперь я хотел бы отправить этот запрос с помощью метода Serialize. Метод Serialize требует два параметра:
<сильный>1. объект и 2. Поток writableStream
У меня вопрос, со вторым. Когда я создаю поток со следующей строкой кода:
Stream wstream;
И используйте его для инициализации моей переменной json2 следующим кодом:
var json2 = highLevelclient.Serializer.Serialize(query, wstream).Utf8String();
Я получаю следующую ошибку в переменной wstream:
Use of unassigned local variable 'wstream'.
Я что-то упускаю? Это то, как я создаю переменную wstream, которая неверна? благодарю вас.
/* \\\ edit: ///// */ Теперь есть еще одна проблема, я использую Searchblox для индексации и поиска моих файлов, который сам вызывает ES 2.x для выполнения этой работы. Searchblox использует файл mapping.json для инициализации сопоставления при создании индекса. Вот ссылка на этот файл. Как предложил @Russ Cam, я создал свой собственный контент класса со следующим кодом (точно так же, как он сделал с индексом questions и классом Question):
public class Content
{
public string type { get; set; }
public Fields fields { get; set; }
}
public class Fields
{
public Content1 content { get; set; }
public Autocomplete autocomplete { get; set; }
}
public class Content1
{
public string type { get; set; }
public string store { get; set; }
public string index { get; set; }
public string analyzer { get; set; }
public string include_in_all { get; set; }
public string boost { get; set; }
} //got this with paste special->json class
Эти поля из класса content (type, store и т. д.) берутся из файла mapping.json, прикрепленного выше. Теперь, когда я (как вы мне показали) выполняю следующий код:
var searchResponse = highLevelclient.Search<Content>(s => s.Query(q => q
.Match(m => m.Field(f => f.fields.content)
.Query("service")
Все, что я получаю в ответ на переменную searchResponse, это:
Valid NEST response built from a successful low level call on POST: /idx014/content/_search
Audit trail of this API call:
-HealthyResponse: Node: http://localhost:9200/ Took: 00:00:00.7180404
Request:
{"query":{"match":{"fields.content":{"query":"service"}}}}
Response:
{"took":1,"timed_out":false,"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":0,"max_score":null,"hits":[]}}
И нет документов в searchResponse.Documents. И наоборот, когда я ищу запрос service в Searchblox или делаю вызов API на localhost:9200 с расширением Sense для Google Chrome, я получаю 2 документа. (документы, которые я искал)
Короче говоря, все, что я хочу, это иметь возможность:
- получить все документы (без критериев)
- получить все документы в пределах временного диапазона и на основе ключевых слов.. таких как обслуживание
Что я делаю не так? При необходимости могу предоставить дополнительную информацию. Спасибо всем за подробные ответы.