如何在 ElasticSearch 的脚本中访问文档 ID?
How to access document id in a script in ElasticSearch?
我正在尝试编写一个聚合文档类型的查询。问题是,文档类型可以从文档 id 中获得——它是 id 的前 4-5 个字符,比如 BPR::fawL5CcPE72Wf3m93hUg2。
这是我放在一起的查询:
{
"query": {
"match_all": { }
},
"aggregations": {
"by_document_type": {
"script": {
"script": "doc['_id'].value.substring(0, 3)",
"order": {
"_count": "desc"
}
}
}
}
}
但它说 Parse Failure [Could not find aggregator type [script] in [by_document_type]]];
。
我做错了什么?
您只需使用 terms
aggregation 并在其中输入您的脚本:
{
"query": {
"match_all": {}
},
"aggregations": {
"by_document_type": {
"terms": {
"script": "doc['_id'].value.substring(0, 3)",
"order": {
"_count": "desc"
}
}
}
}
}
我正在尝试编写一个聚合文档类型的查询。问题是,文档类型可以从文档 id 中获得——它是 id 的前 4-5 个字符,比如 BPR::fawL5CcPE72Wf3m93hUg2。
这是我放在一起的查询:
{
"query": {
"match_all": { }
},
"aggregations": {
"by_document_type": {
"script": {
"script": "doc['_id'].value.substring(0, 3)",
"order": {
"_count": "desc"
}
}
}
}
}
但它说 Parse Failure [Could not find aggregator type [script] in [by_document_type]]];
。
我做错了什么?
您只需使用 terms
aggregation 并在其中输入您的脚本:
{
"query": {
"match_all": {}
},
"aggregations": {
"by_document_type": {
"terms": {
"script": "doc['_id'].value.substring(0, 3)",
"order": {
"_count": "desc"
}
}
}
}
}