1 回答
TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超4個(gè)贊
Elasticsearch 映射是一種告訴底層引擎如何索引文檔字段的方法。
例如,文本字段的索引方式與關(guān)鍵字字段的索引方式不同,您將無(wú)法進(jìn)行相同類(lèi)型的查詢(xún)。
keyword字段按“原樣”索引,因此您可以對(duì)確切的術(shù)語(yǔ)進(jìn)行非??焖俚乃阉鳎ㄊ褂?a >術(shù)語(yǔ)查詢(xún)),但是使用各種方法分析字段,以便能夠進(jìn)行模糊匹配查詢(xún)。text
如果沒(méi)有為字段聲明映射,Elasticsearch 將無(wú)法在任何查詢(xún)中訪問(wèn)它。
您可以閱讀我們的 Elasticsearch 說(shuō)明書(shū)了解更多信息。
關(guān)于映射動(dòng)態(tài)策略,默認(rèn)情況下,此策略設(shè)置為 ,這意味著 ES 不會(huì)推斷新引入的字段類(lèi)型。false
我們選擇使用此默認(rèn)值是因?yàn)槟鸁o(wú)法修改字段的類(lèi)型,因此最好自己定義它,而不是由ES推斷出不太準(zhǔn)確的類(lèi)型。
您可以為整個(gè)映射更改此策略,也可以?xún)H針對(duì)嵌套對(duì)象更改此策略(這被視為最佳實(shí)踐)
{
"dynamic": "false",
"properties": {
"id": { "type": "keyword" },
"metadata": {
"dynamic": "true",
"properties": {
// field types will be automatically inferred in the "metadata" object
}
}
}
}
然后,如果您創(chuàng)建以下文檔:
{
"id": "your-unique-uuid",
"name": "aschen",
"metadata": {
"avatar": "http://url.com"
}
}
id字段已聲明為 ,您可以對(duì)此字段進(jìn)行查詢(xún)。keywordname字段未聲明,動(dòng)態(tài)策略已聲明,因此您無(wú)法對(duì)此字段進(jìn)行查詢(xún)。falsemetadata.avatar字段未聲明,但此嵌套對(duì)象的動(dòng)態(tài)策略是,因此 ES 將為此字段添加類(lèi)型,您可以對(duì)此字段進(jìn)行查詢(xún)。truetext
最后一件事,您在文檔中使用了一個(gè)字段,但Elasticsearch已經(jīng)為每個(gè)文檔生成了唯一的標(biāo)識(shí)符(),因此您可能希望改用該標(biāo)識(shí)符。id_id
我是 Kuzzle 核心的開(kāi)發(fā)人員
添加回答
舉報(bào)
