Агрегация, сортировка, warmers.

148 views
Skip to first unread message

Серёжа Молодец

unread,
May 6, 2015, 5:23:30 PM5/6/15
to elastics...@googlegroups.com

Здравствуйте.
Используем много сортировок в запросе
{
"query": { эта часть меняется в зависомости от фильтров поиска},
"size": 0,
"aggs" : {
"1_agg" : { 
"terms" : { 
"field" : "BrandName.raw",
"size": 0,
"order" : { "_term" : "ASC" }
},
"aggs" : {
"2_agg" : { 
"terms" : { 
"field" : "ModelName.raw",
"size": 0,
"order" : { "_term" : "ASC" }
},
"aggs" : {
"3_agg" : { 
"terms" : { 
"field" : "GoodName.raw",
"size": 0,
"order" : { "_term" : "ASC" }
},
"aggs" : {
"4_agg" : { 
"terms" : { 
"field" : "GoodID",
"size": 0
},
"aggs" : {
"5_agg" : { "sum" : { "field" : "Stock" } },
"6_agg" : { "min" : { "field" : "BuyPrice" } }
}
}
}
}
}
}
}
},
"refresh_CompanyName" : { 
"terms" : { 
"field" : "CompanyName.raw",
"size": 0,
"order" : { "_term" : "asc" }
},
"aggs" : {
"refresh_CompanyId" : { 
"terms" : { 
"field" : "suppl",
"size": 0
},
"aggs" : {
"refresh_Region" : { 
"terms" : { 
"field" : "Region",
"size": 0
}
}
}
}
}
}
}
}
Получается очень медленно.

С сортировкой по метрик агрегации быстрее. Их 4 вида: Stock, BuyPrice, BuyPrice2, RetailPrice
{
"query": {},
"size": 0,
"aggs" : {
"1_agg" : {
"terms" : {
"field" : "GoodID",
"size": 0,
"order": { "Stock": "ASC" }
},
"aggs" : {
"Stock" : {
"sum" : { "field" : "Stock" }
},
"BuyPrice" : {
"min" : { "field" : "BuyPrice" }
},
"BuyPrice2" : {
"max" : { "field" : "BuyPrice" }
},
"RetailPrice" : {
"max" : { "field" : "RetailPrice" }
}
}
},
"refresh_BrandName" : { 
"terms" : { 
"field" : "BrandName.raw",
"size": 0,
"order" : { "_term" : "asc" }
}
},
"refresh_CompanyName" : { 
"terms" : { 
"field" : "CompanyName.raw",
"size": 0,
"order" : { "_term" : "asc" }
},
"aggs" : {
"refresh_CompanyId" : { 
"terms" : { 
"field" : "suppl",
"size": 0
},
"aggs" : {
"refresh_Region" : { 
"terms" : { 
"field" : "Region",
"size": 0
}
}
}
}
}
}
}
}
Можно ли как-то ускорить сортировки?

Обязательный ли блок query в запросе или его можно опустить?
curl -XPUT localhost:9200/test/_warmer/warmer_1 -d '{
    "query" : {
        "match_all" : {}
    },
    "aggs" : {
        "aggs_1" : {
            "terms" : {
                "field" : "field"
            }
        }
    }
}'
У нас query динамический, а вот сортировки не меняются.
Подскажите, есть где посмотреть примеры использования.

"aggs" : {
"5_agg" : { "sum" : { "field" : "Stock" } },
"6_agg" : { "min" : { "field" : "BuyPrice" } }
}
Эти агрегации используем для фильтра. Можно ли указать диапазон фильтра прямо в агрегации?

Спасибо.

Igor Motov

unread,
May 7, 2015, 11:26:35 PM5/7/15
to elastics...@googlegroups.com, ks1...@gmail.com
В warmers запрос указывать не надо. Нужно просто загрузить field data для всех полей. field data загружается при агрегации, или сортировки по полю. Field data загружается для поля целиком, поэтому фильтров указывать тоже не надо. Но главный вопрос только в том, работает оно медленно из-за field data или по какой-то другой причине? Чтобы ответить на этот вопрос надо посмотреть на hot threads в момент выполнения запроса. 

Серёжа Молодец

unread,
May 8, 2015, 1:03:48 PM5/8/15
to elastics...@googlegroups.com, ks1...@gmail.com
В поиске участвуют два запроса. Первый(медленный) выбирает id всех товаров, второй агрегирует все поля для 
25 товаров одной страницы.

::: [Thanos][_TtRMVdJSZqZ0tZfLN5hGw][ip-10-75-42-211][inet[/54.73.189.201:9300]]
   Hot threads at 2015-05-08T16:35:36.763Z, interval=500ms, busiestThreads=3, ignoreIdleThreads=true:
   
   53.6% (268ms out of 500ms) cpu usage by thread 'elasticsearch[Thanos][search][T#3]'
     4/10 snapshots sharing following 20 elements
       org.elasticsearch.search.aggregations.bucket.terms.GlobalOrdinalsStringTermsAggregator$WithHash.getBucketOrd(GlobalOrdinalsStringTermsAggregator.java:304)
       org.elasticsearch.search.aggregations.bucket.terms.GlobalOrdinalsStringTermsAggregator.buildAggregation(GlobalOrdinalsStringTermsAggregator.java:160)
       org.elasticsearch.search.aggregations.Aggregator.gatherAnalysis(Aggregator.java:362)
       org.elasticsearch.search.aggregations.AggregatorFactories$1.gatherAnalysis(AggregatorFactories.java:143)
       org.elasticsearch.search.aggregations.bucket.BucketsAggregator.bucketAggregations(BucketsAggregator.java:122)
       org.elasticsearch.search.aggregations.bucket.terms.GlobalOrdinalsStringTermsAggregator.buildAggregation(GlobalOrdinalsStringTermsAggregator.java:195)
       org.elasticsearch.search.aggregations.Aggregator.gatherAnalysis(Aggregator.java:362)
       org.elasticsearch.search.aggregations.AggregatorFactories$1.gatherAnalysis(AggregatorFactories.java:143)
       org.elasticsearch.search.aggregations.bucket.BucketsAggregator.bucketAggregations(BucketsAggregator.java:122)
       org.elasticsearch.search.aggregations.bucket.terms.GlobalOrdinalsStringTermsAggregator.buildAggregation(GlobalOrdinalsStringTermsAggregator.java:195)
       org.elasticsearch.search.aggregations.AggregationPhase.execute(AggregationPhase.java:134)
       org.elasticsearch.search.query.QueryPhase.execute(QueryPhase.java:172)
       org.elasticsearch.search.SearchService.loadOrExecuteQueryPhase(SearchService.java:286)
       org.elasticsearch.search.SearchService.executeQueryPhase(SearchService.java:297)
       org.elasticsearch.search.action.SearchServiceTransportAction$5.call(SearchServiceTransportAction.java:231)
       org.elasticsearch.search.action.SearchServiceTransportAction$5.call(SearchServiceTransportAction.java:228)
       org.elasticsearch.search.action.SearchServiceTransportAction$23.run(SearchServiceTransportAction.java:559)
       java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
       java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
       java.lang.Thread.run(Thread.java:745)
     5/10 snapshots sharing following 19 elements
       org.elasticsearch.search.aggregations.bucket.terms.GlobalOrdinalsStringTermsAggregator.buildAggregation(GlobalOrdinalsStringTermsAggregator.java:156)
       org.elasticsearch.search.aggregations.Aggregator.gatherAnalysis(Aggregator.java:362)
       org.elasticsearch.search.aggregations.AggregatorFactories$1.gatherAnalysis(AggregatorFactories.java:143)
       org.elasticsearch.search.aggregations.bucket.BucketsAggregator.bucketAggregations(BucketsAggregator.java:122)
       org.elasticsearch.search.aggregations.bucket.terms.GlobalOrdinalsStringTermsAggregator.buildAggregation(GlobalOrdinalsStringTermsAggregator.java:195)
       org.elasticsearch.search.aggregations.Aggregator.gatherAnalysis(Aggregator.java:362)
       org.elasticsearch.search.aggregations.AggregatorFactories$1.gatherAnalysis(AggregatorFactories.java:143)
       org.elasticsearch.search.aggregations.bucket.BucketsAggregator.bucketAggregations(BucketsAggregator.java:122)
       org.elasticsearch.search.aggregations.bucket.terms.GlobalOrdinalsStringTermsAggregator.buildAggregation(GlobalOrdinalsStringTermsAggregator.java:195)
       org.elasticsearch.search.aggregations.AggregationPhase.execute(AggregationPhase.java:134)
       org.elasticsearch.search.query.QueryPhase.execute(QueryPhase.java:172)
       org.elasticsearch.search.SearchService.loadOrExecuteQueryPhase(SearchService.java:286)
       org.elasticsearch.search.SearchService.executeQueryPhase(SearchService.java:297)
       org.elasticsearch.search.action.SearchServiceTransportAction$5.call(SearchServiceTransportAction.java:231)
       org.elasticsearch.search.action.SearchServiceTransportAction$5.call(SearchServiceTransportAction.java:228)
       org.elasticsearch.search.action.SearchServiceTransportAction$23.run(SearchServiceTransportAction.java:559)
       java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
       java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
       java.lang.Thread.run(Thread.java:745)
     unique snapshot
       org.elasticsearch.search.aggregations.bucket.terms.GlobalOrdinalsStringTermsAggregator.buildAggregation(GlobalOrdinalsStringTermsAggregator.java:160)
       org.elasticsearch.search.aggregations.Aggregator.gatherAnalysis(Aggregator.java:362)
       org.elasticsearch.search.aggregations.AggregatorFactories$1.gatherAnalysis(AggregatorFactories.java:143)
       org.elasticsearch.search.aggregations.bucket.BucketsAggregator.bucketAggregations(BucketsAggregator.java:122)
       org.elasticsearch.search.aggregations.bucket.terms.GlobalOrdinalsStringTermsAggregator.buildAggregation(GlobalOrdinalsStringTermsAggregator.java:195)
       org.elasticsearch.search.aggregations.Aggregator.gatherAnalysis(Aggregator.java:362)
       org.elasticsearch.search.aggregations.AggregatorFactories$1.gatherAnalysis(AggregatorFactories.java:143)
       org.elasticsearch.search.aggregations.bucket.BucketsAggregator.bucketAggregations(BucketsAggregator.java:122)
       org.elasticsearch.search.aggregations.bucket.terms.GlobalOrdinalsStringTermsAggregator.buildAggregation(GlobalOrdinalsStringTermsAggregator.java:195)
       org.elasticsearch.search.aggregations.AggregationPhase.execute(AggregationPhase.java:134)
       org.elasticsearch.search.query.QueryPhase.execute(QueryPhase.java:172)
       org.elasticsearch.search.SearchService.loadOrExecuteQueryPhase(SearchService.java:286)
       org.elasticsearch.search.SearchService.executeQueryPhase(SearchService.java:297)
       org.elasticsearch.search.action.SearchServiceTransportAction$5.call(SearchServiceTransportAction.java:231)
       org.elasticsearch.search.action.SearchServiceTransportAction$5.call(SearchServiceTransportAction.java:228)
       org.elasticsearch.search.action.SearchServiceTransportAction$23.run(SearchServiceTransportAction.java:559)
       java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
       java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
       java.lang.Thread.run(Thread.java:745)
   
   49.2% (245.9ms out of 500ms) cpu usage by thread 'elasticsearch[Thanos][search][T#1]'
     5/10 snapshots sharing following 20 elements
       org.elasticsearch.search.aggregations.bucket.terms.GlobalOrdinalsStringTermsAggregator$WithHash.getBucketOrd(GlobalOrdinalsStringTermsAggregator.java:304)
       org.elasticsearch.search.aggregations.bucket.terms.GlobalOrdinalsStringTermsAggregator.buildAggregation(GlobalOrdinalsStringTermsAggregator.java:160)
       org.elasticsearch.search.aggregations.Aggregator.gatherAnalysis(Aggregator.java:362)
       org.elasticsearch.search.aggregations.AggregatorFactories$1.gatherAnalysis(AggregatorFactories.java:143)
       org.elasticsearch.search.aggregations.bucket.BucketsAggregator.bucketAggregations(BucketsAggregator.java:122)
       org.elasticsearch.search.aggregations.bucket.terms.GlobalOrdinalsStringTermsAggregator.buildAggregation(GlobalOrdinalsStringTermsAggregator.java:195)
       org.elasticsearch.search.aggregations.Aggregator.gatherAnalysis(Aggregator.java:362)
       org.elasticsearch.search.aggregations.AggregatorFactories$1.gatherAnalysis(AggregatorFactories.java:143)
       org.elasticsearch.search.aggregations.bucket.BucketsAggregator.bucketAggregations(BucketsAggregator.java:122)
       org.elasticsearch.search.aggregations.bucket.terms.GlobalOrdinalsStringTermsAggregator.buildAggregation(GlobalOrdinalsStringTermsAggregator.java:195)
       org.elasticsearch.search.aggregations.AggregationPhase.execute(AggregationPhase.java:134)
       org.elasticsearch.search.query.QueryPhase.execute(QueryPhase.java:172)
       org.elasticsearch.search.SearchService.loadOrExecuteQueryPhase(SearchService.java:286)
       org.elasticsearch.search.SearchService.executeQueryPhase(SearchService.java:297)
       org.elasticsearch.search.action.SearchServiceTransportAction$5.call(SearchServiceTransportAction.java:231)
       org.elasticsearch.search.action.SearchServiceTransportAction$5.call(SearchServiceTransportAction.java:228)
       org.elasticsearch.search.action.SearchServiceTransportAction$23.run(SearchServiceTransportAction.java:559)
       java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
       java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
       java.lang.Thread.run(Thread.java:745)
     4/10 snapshots sharing following 19 elements
       org.elasticsearch.search.aggregations.bucket.terms.GlobalOrdinalsStringTermsAggregator.buildAggregation(GlobalOrdinalsStringTermsAggregator.java:156)
       org.elasticsearch.search.aggregations.Aggregator.gatherAnalysis(Aggregator.java:362)
       org.elasticsearch.search.aggregations.AggregatorFactories$1.gatherAnalysis(AggregatorFactories.java:143)
       org.elasticsearch.search.aggregations.bucket.BucketsAggregator.bucketAggregations(BucketsAggregator.java:122)
       org.elasticsearch.search.aggregations.bucket.terms.GlobalOrdinalsStringTermsAggregator.buildAggregation(GlobalOrdinalsStringTermsAggregator.java:195)
       org.elasticsearch.search.aggregations.Aggregator.gatherAnalysis(Aggregator.java:362)
       org.elasticsearch.search.aggregations.AggregatorFactories$1.gatherAnalysis(AggregatorFactories.java:143)
       org.elasticsearch.search.aggregations.bucket.BucketsAggregator.bucketAggregations(BucketsAggregator.java:122)
       org.elasticsearch.search.aggregations.bucket.terms.GlobalOrdinalsStringTermsAggregator.buildAggregation(GlobalOrdinalsStringTermsAggregator.java:195)
       org.elasticsearch.search.aggregations.AggregationPhase.execute(AggregationPhase.java:134)
       org.elasticsearch.search.query.QueryPhase.execute(QueryPhase.java:172)
       org.elasticsearch.search.SearchService.loadOrExecuteQueryPhase(SearchService.java:286)
       org.elasticsearch.search.SearchService.executeQueryPhase(SearchService.java:297)
       org.elasticsearch.search.action.SearchServiceTransportAction$5.call(SearchServiceTransportAction.java:231)
       org.elasticsearch.search.action.SearchServiceTransportAction$5.call(SearchServiceTransportAction.java:228)
       org.elasticsearch.search.action.SearchServiceTransportAction$23.run(SearchServiceTransportAction.java:559)
       java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
       java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
       java.lang.Thread.run(Thread.java:745)
     unique snapshot
       org.elasticsearch.search.aggregations.bucket.terms.GlobalOrdinalsStringTermsAggregator.buildAggregation(GlobalOrdinalsStringTermsAggregator.java:160)
       org.elasticsearch.search.aggregations.Aggregator.gatherAnalysis(Aggregator.java:362)
       org.elasticsearch.search.aggregations.AggregatorFactories$1.gatherAnalysis(AggregatorFactories.java:143)
       org.elasticsearch.search.aggregations.bucket.BucketsAggregator.bucketAggregations(BucketsAggregator.java:122)
       org.elasticsearch.search.aggregations.bucket.terms.GlobalOrdinalsStringTermsAggregator.buildAggregation(GlobalOrdinalsStringTermsAggregator.java:195)
       org.elasticsearch.search.aggregations.Aggregator.gatherAnalysis(Aggregator.java:362)
       org.elasticsearch.search.aggregations.AggregatorFactories$1.gatherAnalysis(AggregatorFactories.java:143)
       org.elasticsearch.search.aggregations.bucket.BucketsAggregator.bucketAggregations(BucketsAggregator.java:122)
       org.elasticsearch.search.aggregations.bucket.terms.GlobalOrdinalsStringTermsAggregator.buildAggregation(GlobalOrdinalsStringTermsAggregator.java:195)
       org.elasticsearch.search.aggregations.AggregationPhase.execute(AggregationPhase.java:134)
       org.elasticsearch.search.query.QueryPhase.execute(QueryPhase.java:172)
       org.elasticsearch.search.SearchService.loadOrExecuteQueryPhase(SearchService.java:286)
       org.elasticsearch.search.SearchService.executeQueryPhase(SearchService.java:297)
       org.elasticsearch.search.action.SearchServiceTransportAction$5.call(SearchServiceTransportAction.java:231)
       org.elasticsearch.search.action.SearchServiceTransportAction$5.call(SearchServiceTransportAction.java:228)
       org.elasticsearch.search.action.SearchServiceTransportAction$23.run(SearchServiceTransportAction.java:559)
       java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
       java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
       java.lang.Thread.run(Thread.java:745)


пятница, 8 мая 2015 г., 6:26:35 UTC+3 пользователь Igor Motov написал:

Igor Motov

unread,
May 9, 2015, 9:53:34 AM5/9/15
to elastics...@googlegroups.com, ks1...@gmail.com
Не похоже, что warmers тут сильно помогут. А это какая версия elasticsearch?

Серёжа Молодец

unread,
May 10, 2015, 6:01:54 AM5/10/15
to elastics...@googlegroups.com
1.5.2

9 мая 2015 г., 16:53 пользователь Igor Motov <imo...@gmail.com> написал:

--
Вы получили это сообщение, поскольку подписаны на одну из тем в группе "elasticsearch-ru".
Чтобы отменить подписку на эту тему, перейдите по ссылке https://groups.google.com/d/topic/elasticsearch-ru/oxgBTHqb49k/unsubscribe.
Чтобы отменить подписку на эту группу и все ее темы, отправьте письмо на электронный адрес elasticsearch-...@googlegroups.com.
Чтобы отправлять сообщения в эту группу, отправьте письмо на электронный адрес elastics...@googlegroups.com.
Чтобы зайти в группу, перейдите по ссылке http://groups.google.com/group/elasticsearch-ru.
Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.



--
С уважением, Сергей.

Серёжа Молодец

unread,
May 22, 2015, 9:49:45 AM5/22/15
to elastics...@googlegroups.com
Отказались от такого количества сортировок, ограничили агрегацию. Это помогло.

Николай Измайлов

unread,
May 23, 2015, 7:00:14 AM5/23/15
to elastics...@googlegroups.com
Подскажите а как можно сделать пагинацию ? Что то вроде 

SELECT user_id, SUM(amount) FROM orders WHERE parent_id=1 GROUP BY user_id 
LIMIT 10, 300
Сейчас в агрегации можно передавать только size и можно ли указать типа индекса для более быстрой агрегации. 
Спасио!

Серёжа Молодец

unread,
May 23, 2015, 8:19:41 AM5/23/15
to elastics...@googlegroups.com
Мы отказались от постранички, берем первую страницу, затем подгружаем по запросу еще результаты.

23 мая 2015 г., 14:00 пользователь Николай Измайлов <nekul...@gmail.com> написал:

--
Вы получили это сообщение, поскольку подписаны на одну из тем в группе "elasticsearch-ru".
Чтобы отменить подписку на эту тему, перейдите по ссылке https://groups.google.com/d/topic/elasticsearch-ru/oxgBTHqb49k/unsubscribe.
Чтобы отменить подписку на эту группу и все ее темы, отправьте письмо на электронный адрес elasticsearch-...@googlegroups.com.
Чтобы отправлять сообщения в эту группу, отправьте письмо на электронный адрес elastics...@googlegroups.com.
Чтобы зайти в группу, перейдите по ссылке http://groups.google.com/group/elasticsearch-ru.
Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.



--
С уважением, Сергей.

Николай Измайлов

unread,
May 23, 2015, 12:18:34 PM5/23/15
to elastics...@googlegroups.com
Каждый раз увеличивая size при этом у вас данных возвращаться все больше записей

суббота, 23 мая 2015 г. пользователь Серёжа Молодец написал:

Николай Измайлов

unread,
May 23, 2015, 12:21:53 PM5/23/15
to elastics...@googlegroups.com
А нельзя ли сделать инкреметный id и по нему фильтровать выдачу как пагинацию. Но группировку всех данных не избежать

суббота, 23 мая 2015 г. пользователь Николай Измайлов написал:

Igor Motov

unread,
May 23, 2015, 3:46:34 PM5/23/15
to elastics...@googlegroups.com, nekul...@gmail.com
Этот вопрос активно обсуждается в данный момент - https://github.com/elastic/elasticsearch/issues/4915#issuecomment-104445714


On Saturday, 23 May 2015 12:21:53 UTC-4, Николай Измайлов wrote:
А нельзя ли сделать инкреметный id и по нему фильтровать выдачу как пагинацию. Но группировку всех данных не избежать

суббота, 23 мая 2015 г. пользователь Николай Измайлов написал:
> Каждый раз увеличивая size при этом у вас данных возвращаться все больше записей
>
> суббота, 23 мая 2015 г. пользователь Серёжа Молодец написал:
>> Мы отказались от постранички, берем первую страницу, затем подгружаем по запросу еще результаты.
>> 23 мая 2015 г., 14:00 пользователь Николай Измайлов <nekul...@gmail.com> написал:
>>>
>>> Подскажите а как можно сделать пагинацию ? Что то вроде 
>>> SELECT user_id, SUM(amount) FROM orders WHERE parent_id=1 GROUP BY user_id 
>>> LIMIT 10, 300
>>> Сейчас в агрегации можно передавать только size и можно ли указать типа индекса для более быстрой агрегации. 
>>> Спасио!
>>>
>>> --
>>> Вы получили это сообщение, поскольку подписаны на одну из тем в группе "elasticsearch-ru".
>>> Чтобы отменить подписку на эту тему, перейдите по ссылке https://groups.google.com/d/topic/elasticsearch-ru/oxgBTHqb49k/unsubscribe.
>>> Чтобы отменить подписку на эту группу и все ее темы, отправьте письмо на электронный адрес elasticsearch-ru+unsubscribe@googlegroups.com.
>>> Чтобы отправлять сообщения в эту группу, отправьте письмо на электронный адрес elasticsearch-ru@googlegroups.com.

>>> Чтобы зайти в группу, перейдите по ссылке http://groups.google.com/group/elasticsearch-ru.
>>> Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.
>>
>>
>>
>> --
>> С уважением, Сергей.
>>
>> --
>> Вы получили это сообщение, поскольку подписаны на одну из тем в группе "elasticsearch-ru".
>> Чтобы отменить подписку на эту тему, перейдите по ссылке https://groups.google.com/d/topic/elasticsearch-ru/oxgBTHqb49k/unsubscribe.
>> Чтобы отменить подписку на эту группу и все ее темы, отправьте письмо на электронный адрес elasticsearch-ru+unsubscribe@googlegroups.com.
>> Чтобы отправлять сообщения в эту группу, отправьте письмо на электронный адрес elasticsearch-ru@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages