在ElasticSearch搜索查询中获取文档的所有字段

时间:2015-01-09 17:18:47

标签: elasticsearch

如何获取与搜索查询匹配的文档中的所有字段?关于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
    } ]
  }

2 个答案:

答案 0 :(得分:2)

The doc实际上说:

  

" *可用于加载文档中的所有存储字段。"

core types doc表示存储字段的默认值为' false'。

  

由于默认情况下ElasticSearch将源文档的所有字段存储在特殊_source字段中,因此在类型定义中禁用_source字段时,此选项非常有用。默认为false。

如果您没有指定'字段'在搜索中,您可以看到_source中的内容。

因此,如果您想将其作为字段返回,请更改映射以存储字段。

答案 1 :(得分:1)

我也面临着这个问题。 我发现,如果仅搜索textkeyword字段,一切就可以了。 希望对您有帮助。