Я хотел агрегировать данные в другом поле, а также хотел получить агрегированные данные отсортированным способом по имени.
Мои данные:
{
"_index": "testing-aggregation",
"_type": "employee",
"_id": "emp001_local000000000000001",
"_score": 10.0,
"_source": {
"name": [
"Person 01"
],
"groupbyid": [
"group0001"
],
"ranking": [
"2.0"
]
}
},
{
"_index": "testing-aggregation",
"_type": "employee",
"_id": "emp002_local000000000000001",
"_score": 85146.375,
"_source": {
"name": [
"Person 02"
],
"groupbyid": [
"group0001"
],
"ranking": [
"10.0"
]
}
},
{
"_index": "testing-aggregation",
"_type": "employee",
"_id": "emp003_local000000000000001",
"_score": 20.0,
"_source": {
"name": [
"Person 03"
],
"groupbyid": [
"group0002"
],
"ranking": [
"-1.0"
]
}
},
{
"_index": "testing-aggregation",
"_type": "employee",
"_id": "emp004_local000000000000001",
"_score": 5.0,
"_source": {
"name": [
"Person 04"
],
"groupbyid": [
"group0002"
],
"ranking": [
"2.0"
]
}
}
Мой запрос :
{
"size": 0,
"query": {
"bool": {
"must": [
{
"query_string": {
"query": "name:emp*^1000.0"
}
}
]
}
},
"aggs": {
"groupbyid": {
"terms": {
"field": "groupbyid.raw",
"order": {
"top_hit_agg": "desc"
},
"size": 10
},
"aggs": {
"top_hit_agg": {
"terms": {
"field": "name"
}
}
}
}
}
}
Мое сопоставление:
{
"name": {
"type": "text",
"fielddata": true,
"fields": {
"lower_case_sort": {
"type": "text",
"fielddata": true,
"analyzer": "case_insensitive_sort"
}
}
},
"groupbyid": {
"type": "text",
"fielddata": true,
"index": "analyzed",
"fields": {
"raw": {
"type": "keyword",
"index": "not_analyzed"
}
}
}
}
Я получаю данные на основе среднего значения релевантности сгруппированных записей. Теперь я хотел, чтобы первый клуб записывал записи на основе groupid, а затем в каждом сегменте сортировал данные на основе поля имени.
Я хотел группировать по одному полю, а после этого сгруппированного сегмента я хочу сортировать по другому полю. Это примеры данных.
Существуют и другие поля, такие как созданный_, обновленный_он. Я также хотел получить отсортированные данные на основе этого поля. также получить данные по алфавиту.
Я хотел отсортировать данные по нечисловому типу данных c (строка). Я могу сделать тип данных нумерация c.
Я могу сделать это для поля ранжирования, но не могу сделать это для поля имени. Это давало ошибку ниже.
Expected numeric type on field [name], but got [text];