如何获取与搜索查询匹配的文档中的所有字段?关于fields
的ES文档说明使用*
,可以获取所有字段:http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-fields.html
有了这个文档和这个查询,我得到了结果,但没有返回任何字段:
放文件:
curl -XPUT http://localhost:9200/idx/t/doc1 -d '{
"f": "value"
}'
搜索:
curl -XPOST http://localhost:9200/idx/_search?pretty -d '{
"fields": "*",
"query": { "term" : { "f" : "value" }}
}'
我也尝试["*"]
,但结果相同,只返回默认字段(_id
和_type
)。响应中的命中部分如下所示:
"hits" : {
"total" : 1,
"max_score" : 0.30685282,
"hits" : [ {
"_index" : "idx",
"_type" : "t",
"_id" : "doc1",
"_score" : 0.30685282
} ]
}
答案 0 :(得分:2)
The doc实际上说:
" *可用于加载文档中的所有存储字段。"
core types doc表示存储字段的默认值为' false'。
由于默认情况下ElasticSearch将源文档的所有字段存储在特殊_source字段中,因此在类型定义中禁用_source字段时,此选项非常有用。默认为false。
如果您没有指定'字段'在搜索中,您可以看到_source中的内容。
因此,如果您想将其作为字段返回,请更改映射以存储字段。
答案 1 :(得分:1)
我也面临着这个问题。
我发现,如果仅搜索text
或keyword
字段,一切就可以了。
希望对您有帮助。