_souce禁用,如何搜索? 指定_souce存储的字段?控制从_source返回部分字段?

来源:互联网 发布:抢票软件演唱会 编辑:程序博客网 时间:2024/06/18 05:16

事实上,_source 字段就是一个储存字段。
在 Elasticsearch 中,单独设置储存字段不是一个好做法。完整的文档已经被保存在 _source 字段中。
通常最好的办法会是使用 _source 参数来过滤你需要的字段。

_source禁用,如何搜索到字段值?

必须设置所有字段:store:true
如果mapping中,对于某个type,设置了 “_source”: {“enabled”: false},那么查询结果中就没有_source字段只能查到文档id。

如果mapping中,field设置了store为true,例如 “age”:{“type”:”integer”,”store”:true},那么就可以在查询时通过指定fields获取到指定的field的数据。

store默认false。

fielddata_fields 和 fields区别?
fielddata_fields同时还返回_source, fields不返回_source。

  • field data fields(fielddata_fields) can work on fields that are not stored(from _source),will cause the terms for that field to be loaded to memory (cached),
  • fields parameter(fields) is about fields that are explicitly marked as stored in the mapping, which is off by default and generally not recommended.

https://www.elastic.co/guide/en/elasticsearch/reference/2.1/search-request-fielddata-fields.html
https://www.elastic.co/guide/en/elasticsearch/reference/2.1/search-request-fields.html

REST:
https://www.elastic.co/guide/en/elasticsearch/reference/2.1/search-request-fields.html

{    "fields" : ["user", "postDate"],    "query" : {        "term" : { "user" : "kimchy" }    }}

Java API

SearchRequestBuilder类方法:addFields(String... fields)或:addField(String field) 

建索引时,指定_souce存储的字段?

默认存储所有字段

PUT logs{  "mappings": {    "event": {      "_source": {        "includes": [          "*.count",          "meta.*"        ],        "excludes": [          "meta.description",          "meta.other.*"        ]      }    }  }}

控制从_source返回部分字段

GET /_search{    "query":   { "match_all": {}},    "_source": [ "title", "created" ]}//支持通配符{    "_source": "obj.*",    "query" : {        "term" : { "user" : "kimchy" }    }}{    "_source": [ "obj1.*", "obj2.*" ],    "query" : {        "term" : { "user" : "kimchy" }    }}{    "_source": {        "include": [ "obj1.*", "obj2.*" ],        "exclude": [ "*.description" ]    },    "query" : {        "term" : { "user" : "kimchy" }    }}

PUT demo{   "mappings": {      "mytype": {         "_source": {            "enabled": false         },         "_all": {            "enabled": false         },         "properties": {            "store": {               "store": true,               "type": "long"            },            "nostore": {               "type": "long"            },            "date": {               "type": "date"            }         }      }   }}POST demo/mytype{    "store":11,    "nostore":12,    "date":"2006-12-14"}GET demo/mytype/_search{    "fields":[ "store","nostore","date" ]}GET demo/mytype/_search{    "fielddata_fields":[ "store","nostore","date" ]}

script

Elasticsearch增删改查 之 —— Update更新
批量更新:
https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html
Elasticsearch’s Update_by_query: Update Multiple Documents Simultaneously【ES 2.3】
https://qbox.io/blog/elasticsearch-update_by_query-multiple-documents-simultaneously
Query DSL » Specialized queries » Script Query
https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-script-query.html

0 0
原创粉丝点击