Мы запросили данный MAC # (пример), используя простой CURL и Spark, и получили одинаковое количество.Но, как только мы выполним полный поиск индекса, мы увидим уменьшенное число событий для того же MAC #, а также повторяющиеся события.Понятно, что во время нашего полного приема есть проблема.Общий объем на ежедневной основе составит около 200-400 миллионов.
Причина неизвестна и, по-видимому, больше связана с тонкой настройкой параметров ElasticSearch.
Версия Elasticsearch - 5.x Spark - 2.x Scala - 2.x Размер источника данных включенES - 70 - 80 ГБ. Всего 5 сегментов. Количество используемых исполнителей в настоящее время - 17 ядер - 3
. Если мы уберем опцию max docs и прокрутки, данные идеально совпадают, но снижают производительность.Задание, которое обычно выполняется в течение 30 минут, теперь выполняется в течение 6-7 часов.
val df = spark.read.format("org.elasticsearch.spark.sql")
.option("es.nodes",host.net:9200")
.option("es.nodes.wan.only", "true")
.option("es.read.field.as.array.include", "tags")
.option("es.input.max.docs.per.partition", "100000")
.option("es.read.metadata", "true")
.option("es.scroll.size","10000")
.option("es.query",""" ?q=message:"sample here" """)
.load(index_nm)
Есть ли способ настроить эластичный поиск для более быстрого поиска или любые лучшие настройки для максимального количества документов и размера прокрутки.