Elasticsearch suggested为可拒绝的_source
和_all
字段,这是我的映射
{
"template": "mq-body-*",
"settings": {
"number_of_shards": 3,
"number_of_replicas": 0,
"max_result_window": 100,
"codec": "best_compression"
},
"mappings": {
"_default_": {
"_source": {
"enabled": false
},
"_all": {
"enabled": false
}
},
"body": {
"properties": {
"body": {
"type": "string",
"doc_values": true,
"index": "not_analyzed"
}
}
}
}
}
body.body
是一个非常大的领域(20k-300k),我们不需要索引和罕见的,这是丢失的。但是之后
PUT /mq-body-local/body/1
{"body":"My body"}
我无法通过GET /mq-body-local/body/1?fields=body
或POST /mq-body-local/body/_search -d'{"fields":["body"]}'
查找正文,结果是找到一个但没有文档。我知道没有_source
我做不到{{} 1}}或get
,但我怎样才能检索我的文件?
答案 0 :(得分:3)
来自Elasticsearch的网站:
_source字段包含原始的JSON文档正文 在索引时间通过。 _source字段本身没有索引(和 因此是不可搜索的),但它被存储以便可以返回 执行获取请求时,如获取或搜索
禁用源将阻止Elasticsearch在结果集中显示它。但是,过滤,查询和聚合不会受到影响。
因此,这两个查询不会根据实际正文产生任何结果:
GET mq-body-local/body/1
POST mq-body-local/body/_search
{
"aggs": {
"test": {
"terms": {
"field": "body"
}
}
}
}
但是,您可以运行包含某些源的聚合,例如:
"aggregations": {
"test": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "my body",
"doc_count": 1
},
{
"key": "my body2",
"doc_count": 1
}
]
}
}
会产生这个结果集(我已经创建了一些测试记录):
{{1}}