在使用elasticsearch 時, "_source" 這個然後會根據你 input 進來 index 時的document 儲存下來。
default 的情況下,會把你索引的docs的每個欄位都儲存下來。
這時候可能有些情況,
我只想索引他,也就使用query string做 query時,查找的到這個 document ,但是不想在_source 列出該欄位內容呢?
這時候可以使用 _source 提供的 includes ,excludes
{ "my_type" : { "_source" : { "includes" : ["path1.*", "path2.*"], "excludes" : ["pat3.*"] } } }
舉個實際例子來看,當你索引一個type為 logs的document 時,你想要讓 tag 這欄位是可以被搜尋的,但是不想讓他show 到 hit的 source內。
PUT http://localhost:9200/INDEX_NAME/
{
"settings": {
"analysis": {
"analyzer": {
"default": {
"tokenizer": "keyword",
"filter": "lowercase"
}
}
}
},
"mappings": {
"logs": {
"_all": {
"type": "string",
"index": "analyzed",
"analyzer": "standard"
},
"_source": {
"excludes": [
"tag"
]
}
}
}
}
ref
_source
http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-source-field.html
沒有留言:
張貼留言