store
编辑store
编辑
默认情况下,字段值会被索引以便进行搜索,但不会被*存储*。这意味着可以查询该字段,但无法检索原始字段值。
通常情况下,这并不重要。字段值已经是_source
字段的一部分,而该字段默认情况下会被存储。如果您只想检索单个字段或少数几个字段的值,而不是整个 _source
,则可以使用源过滤来实现。
在某些情况下,store
一个字段是有意义的。例如,如果您有一个包含 title
、date
和非常大的 content
字段的文档,您可能只想检索 title
和 date
,而无需从大型 _source
字段中提取这些字段。
response = client.indices.create( index: 'my-index-000001', body: { mappings: { properties: { title: { type: 'text', store: true }, date: { type: 'date', store: true }, content: { type: 'text' } } } } ) puts response response = client.index( index: 'my-index-000001', id: 1, body: { title: 'Some short title', date: '2015-01-01', content: 'A very long content field...' } ) puts response response = client.search( index: 'my-index-000001', body: { stored_fields: [ 'title', 'date' ] } ) puts response
PUT my-index-000001 { "mappings": { "properties": { "title": { "type": "text", "store": true }, "date": { "type": "date", "store": true }, "content": { "type": "text" } } } } PUT my-index-000001/_doc/1 { "title": "Some short title", "date": "2015-01-01", "content": "A very long content field..." } GET my-index-000001/_search { "stored_fields": [ "title", "date" ] }
存储的字段以数组形式返回
为了保持一致性,存储的字段始终以*数组*形式返回,因为无法知道原始字段值是单个值、多个值还是空数组。
如果您需要原始值,则应从 _source
字段中检索它。