Что эквивалентно уменьшению карты в ElasticSearch, когда обработка слишком много для клиентской стороны? Есть ли что-то вроде «потоковой передачи», поэтому клиент может сократить объем данных до вывода, когда он приходит?Elasticsearch эквивалентен Map-Reduce
Предположим, мне нужно выполнить объединение или сложную фильтрацию на стороне клиента, тип, который может не соответствовать памяти без какой-либо схемы уменьшения карты. Я не против долго ждать ответа, но я не хочу раздавить машину (клиент и/или сервер).
Как мне это сделать?
Например, отображения:
{"book":{"properties":{
"title":{"type":"string", "index":"analyzed"},
"author":{"type":"string", "index":"analyzed"},
}
{"character":{"properties":{
"book_id":{"type":"string", "index":"not_analyzed"},
"name":{"type":"string", "index":"analyzed"},
"age":{"type":"integer"},
"catch-phrase":{"type":"string", "index":"analyzed"},
}
Скажем, я хочу, чтобы найти все книги, которые имеют по крайней мере M символов, которые имеют крылатую фразу не более чем N (где N является параметром поставляется на стороне клиента)
поэтому было бы get_books_with_short_phrases(M,N)
Я мог бы, конечно, добавить поля, такие как «фраза длина» к типу «характер», но давайте предположим, что обработка на «крылатое словечко» может быть все время меняется.
Я хотел бы течь «символы» и «книги» к клиенту, перейдите по каждому клиенту и вывода ключа значение <book>-<character,len(phrase)>
затем уменьшить его до <book>-<num_of_chars_with_short_phrase>
Если я загрузить все документы в клиентская память, которая может быть катастрофой. Если клиент обрабатывает каждую книгу и сводит ее к k, v это может быть лучше.
Я не ошибаюсь?
Является ли решение, выполняющее сценарии на сервере каким-то образом, поэтому оно выполняет сокращение карты?