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

Get all fields of a document in ElasticSearch search query

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

The doc 实际上是说:

"* can be used to load all stored fields from the document."

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

Since by default ElasticSearch stores all fields of the source document in the special _source field, this option is primarily useful when the _source field has been disabled in the type definition. Defaults to false.

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

因此,如果您想 return 它作为一个字段,请更改您的映射以存储该字段。

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