2015-01-09 128 views
1

如何獲取與搜索查詢匹配的文檔中的所有字段?在fields ES文件說,使用*,可以得到各個領域:http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-fields.html獲取ElasticSearch搜索查詢中文檔的所有字段

有了這個文件,這個查詢,我被打中的結果,但不會返回任何字段:

認沽文件:

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

您的文檔有一個字段;你不收回它? –

+0

@AlainCollins查看帶ES響應的更新文本。 – Martin

回答

2

The doc居然說:

「*可用於從文件加載所有存儲領域。」

core types doc表示存儲字段的默認值爲'false'。

由於默認情況下ElasticSearch將源文檔的所有字段存儲在特殊_source字段中,因此當類型定義中已禁用_source字段時,此選項將非常有用。默認爲false。

如果您在搜索中未指定'fields',則可以看到_source中的內容。

因此,如果您想將其作爲字段返回,請更改映射以存儲該字段。

相關問題