Я проиндексировал более 2.000.000 документов в Elasticsearch (используя библиотеку Elastic в R), я хочу знать наиболее частые термины в конкретном поле, скажем, поле называется «X», содержащее строки.Однако функция агрегации выдает ошибку: Ошибка: 400 - сбой всех осколков
Я попробовал следующее в R (примеры отрегулированы из руководства библиотеки эластичных данных).
Шаг 1
Сначала я создал индекс с отображением (т. Е. В исходном индексе поле 'X' было проиндексировано как поле 'ключевого слова' вместо текста ', я подумал, что, возможно, в этом проблема.
body <- list(test = list(properties = list(
X = list(type="text"),
Y = list(type="long")
)))
if (!index_exists("example")) index_create("example")
mapping_create(index = "example", type = "test", body=body)
Шаг 2
Затем я проиндексировал пакет документов
X <- c("xxx first","xxx second","xxx third","yyy fourth")
Y <- c("21","22","24","17")
data <- data.frame(X,Y)
docs_bulk(x=data,index='example',type = "test")
Шаг 3
Затем я создал запрос агрегации и выполнил его в r
body <-
'{
"size": 0,
"aggs": {
"frequent_tags": {
"terms": {"field": "X"}
}
}
}
'
Search(index='example',body=body)
Шаг 4
... и я получил ошибку "Ошибка: 400 - все шарды не удалось"
Шаг 5 и атрибут 6
Next I добавил "."к телу (то есть {" field ":" attribute.X "}), теперь запрос выполняется, но безрезультатно. Я также пробовал {" field ":" keyword.X "}), но это сделалтакже не дает ожидаемых результатов.
Ожидаемый результат
Объект с надписью
xxx --> 3 documents
yyy --> 1 document
first --> 1 document
second --> 1 document
fourth --> 1 document
Спасибо за вашу помощь;дайте мне знать, если вам нужно больше информации.