我的代码:
$test1 = '{
"query": {
"query_string": {
"query": "*"
}
},
"aggs": {
"AGE": {
"filter": {
"range": {
"age": { }
}
}
}
},
"sort": {
"age": {
"order": "desc"
}
}
}';
$response = $this->elasticsearch->advancedquery("comment", $test1);
数据库名称默认在类文件中设置,("comment", $test1);
'comment'是表名。
这个查询有什么问题吗?
当我运行查询时,我收到以下错误
[root_cause] => Array
(
[0] => Array
(
[type] => illegal_argument_exception
[reason] => Fielddata is disabled on text fields by default. Set fielddata=true on [age] 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.
)
)
答案 0 :(得分:2)
在5.x版本中,文本字段上禁用FieldData
默认情况下。如果需要,您需要启用它们。
Fielddata会消耗大量的堆空间,尤其是在加载高基数文本字段时。一旦fielddata已加载到堆中,它将在该段的生命周期内保留。此外,加载fielddata是一个昂贵的过程,可能会导致用户遇到延迟命中。这就是默认情况下禁用fielddata的原因。
如果要在字段上运行聚合,则需要启用它:
PUT my_index/_mapping/my_type
{
"properties": {
"age": {
"type": "text",
"fielddata": true
}
}
}
希望这会有所帮助!!