Во время выполнения этого кода
try:
connections.create_connection(hosts=[ES_IP], timeout=ES_TIMEOUT, http_auth=(USERNAME, PASSWORD))
print "Connected to elasticsearch node "+ES_IP
#logging.info("Connected to elasticsearch node "+ES_IP)
except:
print "Connection refused by elasticsearch node "+ES_IP
#logging.error("Connection refused by elasticsearch node "+ES_IP)
return -1
else:
s=Search(index = "*-indices-alias")
a = A('matrix_stats',field=['ERABESTABADDATTNBRQCI1','ERABESTABADDATTNBRQCI6'])
s.aggs.bucket('statistics',a)
pprint(str(s.to_dict()))
Я получаю эту ошибку
Traceback (most recent call last):
File "elastic_query.py", line 45, in <module>
run_agg_dsl_query()
File "elastic_query.py", line 41, in run_agg_dsl_query
a = A('matrix_stats',field=
['ERABESTABADDATTNBRQCI1','ERABESTABADDATTNBRQCI6'])
File "/usr/local/lib/python2.7/dist-packages/elasticsearch_dsl/aggs.py", line 42, in A
return Agg.get_dsl_class(name_or_agg)(**params)
File "/usr/local/lib/python2.7/dist-packages/elasticsearch_dsl/utils.py", line 216, in get_dsl_class
raise UnknownDslObject('DSL class `%s` does not exist in %s.' % (name, cls._type_name))
elasticsearch_dsl.exceptions.UnknownDslObject: DSL class `matrix_stats` does not exist in agg.
Если я заменю "matrix_stats" на "term", запрос генерируется как
"{'query': {'match_all': {}}, 'aggs': {'statistics': {'terms': {'field': ['ERABESTABADDATTNBRQCI1', 'ERABESTABADDATTNBRQCI6']}}}}"
но я хочу, чтобы запрос был сгенерирован как
"{'query': {'match_all': {}}, 'aggs': {'statistics': {'matrix_stats': {'field': ['ERABESTABADDATTNBRQCI1', 'ERABESTABADDATTNBRQCI6']}}}}"
В настоящее время matrix_stats не поддерживается библиотекомasticsearch-DSL?
если да, можем ли мы ожидать, что в будущем будет добавлена агрегация матриц?
если нет, то чего мне не хватает, так как я новичок в этом.
Любая помощь приветствуется.
Спасибо,