Разбиение фраз при агрегаций elasticsearch

164
09 января 2019, 21:50

Как убрать разбиение предложений по фразам при агреггировании в 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
                            }
                        }
                    },
Answer 1
{
"aggs": {
    "characteristics": {
        "terms": {
            "field": "product_char.char_id"
        },
        "aggs": {
            "value": {
                "terms": {
                    "field": "product_char.value.keyword"
                }
            }
        }
    }
}
}
READ ALSO
Как правильно удалить файл через javascript?

Как правильно удалить файл через javascript?

Подскажите, пожалуйста, где у меня ошибка? В файл testphp добавляю:

134
Пропустить кавычки и слеши

Пропустить кавычки и слеши

Использую mysqli запрос prepare в вставляемом тексте, есть пути имеющие слеши \ и слова например: it's как мне сказать mysqli, что это норма - жри?

163
Как получить данные с callback_data в telegram bot sdk?

Как получить данные с callback_data в telegram bot sdk?

Использую библиотеку telegram bot sdk, дошёл до момента, когда нужно сделать inline кнопкиПри нажатии на них должно отдаваться содержимое параметра...

259