2015-07-22 28 views
0

所以有源字段,文檔字段和存儲字段。但是它們有什麼不同?我讀了the documentation,但他們對我仍然是一樣的。然後還有script fieldsElasticsearch的字段類型差異

也許作爲一個起點:

$ curl -XPUT 'http://localhost:9200/my-index/my-type/1' -d '{ 
    "@timestamp": "2015-07-22T09:00:00.000Z", 
    "user": "sjngm", 
    "message": "It's kinda warm in here", 
    "happiness": 89 
}' 

與此查詢:

{ 
    "query": { 
    "filtered": { 
     "filter": { 
     "script": { 
      "script": "doc['happiness'].value > 50" }}}}} 

相比

{ 
    "query": { 
    "filtered": { 
     "filter": { 
     "script": { 
      "script": "_source['happiness'] > 50" }}}}} 

這將引發一個NullPointerException:

{ 
    "query": { 
    "filtered": { 
     "filter": { 
     "script": { 
      "script": "_fields['happiness'].value > 50" }}}}} 

這些類型代表什麼?他們來自哪裏?我什麼時候使用什麼?

也許是一個額外的問題:是否有可能在上述任何一個響應中爲「命中/命中/ _source」生成附加字段?也許有一個腳本字段的變體?

任何人都可以提供簡單的英語解釋嗎?

回答

0
  • doc["my-field"].value提供*.raw,負載中的所有值完全獨立的過濾器=>快,使用大量負載的RAM
  • _source["my-field"]文檔作爲從磁盤壓縮JSON fielddata並解析它的字段=>可採取一段時間後,分析由流=做>後字段花費更長的時間被發現
  • _fields["my-field"].value只訪問標記在索引」映射爲"store": true
特殊字段