如何从ElasticSearch获取详细的结果输出

时间:2013-04-13 17:22:28

标签: elasticsearch dsl

当我这样做一个查询时:

curl 'http://localhost:9200/xenforo/_search?q=message:test'

我得到以下结果:

{
    "took": 3,
    "timed_out": false,
    "_shards": {
        "total": 5,
        "successful": 5,
        "failed": 0
    },
    "hits": {
        "total": 1,
        "max_score": 12.816886,
        "hits": [
            {
                "_index": "xenforo",
                "_type": "post",
                "_id": "1778114",
                "_score": 12.816886
            }
        ]
    }
}

显示了重要的_id,但我如何获得更多信息,如日期,用户和节点信息。

以下是我的一些映射信息,我认为重要的部分是显示的:

curl -X GET 'http://localhost:9200/xenforo/_mapping?pretty=true'
{
  "xenforo113" : {
    "post" : {
      "_source" : {
        "enabled" : false
      },
      "properties" : {
        "date" : {
          "type" : "long",
          "store" : "yes"
        },
        "discussion_id" : {
          "type" : "long",
          "store" : "yes"
        },
        "message" : {
          "type" : "string"
        },
        "node" : {
          "type" : "long"
        },
        "thread" : {
          "type" : "long"
        },
        "title" : {
          "type" : "string"
        },
        "user" : {
          "type" : "long",
          "store" : "yes"
        }
      }
    },

我假设我需要进行DSL查询,但我不知道哪个命令会显示我在结果中显示的其他信息。

1 个答案:

答案 0 :(得分:1)

由于您已禁用_source,因此您必须要求显式字段:

curl 'http://localhost:9200/xenforo/_search -d '{
    "fields" : ["user", "date", "node"],
    "query" : {
        "match" : { "message" : "test" }
    }
}'

请参阅documentation