Как убрать разбиение предложений по фразам при агреггировании в elasticsearch?
Есть массив характеристик вида:
"product_char": [
{
"product_id": 11,
"char_id": 6,
"value": "бамбук 90 %"
},
{
"product_id": 11,
"char_id": 6,
"value": "хлопок 95 % эластан 5%"
}
]
при аггрегировании:
{
"aggs": {
"characteristics": {
"terms": {
"field": "product_char.char_id"
},
"aggs": {
"value": {
"terms": {
"field": "product_char.value"
}
}
}
}
}
}
получаю:
"key": 6,
"doc_count": 5,
"value": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "хлопок",
"doc_count": 4
},
{
"key": "5",
"doc_count": 2
},
{
"key": "95",
"doc_count": 2
},
{
"key": "эластан",
"doc_count": 2
},
{
"key": "90",
"doc_count": 1
},
{
"key": "бамбук",
"doc_count": 1
}
]
}
Прописывал в _mapping у поля value
type: keyword
, выдовал ошибку, что невозможно изменить тип поля при значении fielddata
: .Создал новый индекс с типом поля keyword
теперь аггригация поля value
не проходит требует включить fielddata
: которое не включается при type: keyword
Ошибка при type: keyword
{"error":{"root_cause":[{"type":"illegal_argument_exception","reason":"Fielddata is disabled on text fields by default. Set fielddata=true on [product_char.value] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory. Alternatively use a keyword field instead."}],"type":"search_phase_execution_exception","reason":"all shards failed","phase":"query","grouped":true,"failed_shards":[{"shard":0,"index":"test3","node":"83jN5G38TDy-WaJT9RG4DA","reason":{"type":"illegal_argument_exception","reason":"Fielddata is disabled on text fields by default. Set fielddata=true on [product_char.value] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory. Alternatively use a keyword field instead."}}],"caused_by":{"type":"illegal_argument_exception","reason":"Fielddata is disabled on text fields by default. Set fielddata=true on [product_char.value] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory. Alternatively use a keyword field instead.","caused_by":{"type":"illegal_argument_exception","reason":"Fielddata is disabled on text fields by default. Set fielddata=true on [product_char.value] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory. Alternatively use a keyword field instead."}}},"status":400}
вот _mapping:
"product_char": {
"properties": {
"char_id": {
"type": "long"
},
"data_type": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"filter": {
"type": "long"
},
"product_id": {
"type": "long"
},
"unit": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"value": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
},
"fielddata": true
}
}
},
{
"aggs": {
"characteristics": {
"terms": {
"field": "product_char.char_id"
},
"aggs": {
"value": {
"terms": {
"field": "product_char.value.keyword"
}
}
}
}
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Подскажите, пожалуйста, где у меня ошибка? В файл testphp добавляю:
Использую mysqli запрос prepare в вставляемом тексте, есть пути имеющие слеши \ и слова например: it's как мне сказать mysqli, что это норма - жри?
Использую библиотеку telegram bot sdk, дошёл до момента, когда нужно сделать inline кнопкиПри нажатии на них должно отдаваться содержимое параметра...