在 Elasticsearch 中,Mapping 是非常重要的一個概念,它定義了索引中的每個字段的數據類型、分析器和其他重要屬性。而 Mapping 定義的格式就是 JSON 格式。
{ "mappings": { "properties": { "title": { "type": "text" }, "content": { "type": "text", "analyzer": "ik_max_word" }, "created_at": { "type": "date" } } } }
上面的代碼是一個簡單的 Mapping JSON 示例,其中 "mappings" 表示 Mapping 的開始標志,而 "properties" 則表示索引中的字段列表,每個字段都由一個對象表示。其中包括 "type" 表示字段的數據類型,"analyzer" 表示使用的分析器等屬性。
除了上述示例中的字段,還有很多其他的字段類型可以使用,比如數字型、布爾型等,而且通過指定不同的屬性參數,可以進一步微調 Mapping 的行為,提升索引的效率。
{ "mappings": { "properties": { "id": { "type": "long" }, "name": { "type": "keyword", "ignore_above": 256 }, "age": { "type": "integer", "coerce": true }, "is_deleted": { "type": "boolean" }, "created_at": { "type": "date", "format": "yyyy-MM-dd HH:mm:ss" } } } }
以上代碼中,我們可以看到更多不同類型字段的使用示例,比如 "keyword" 類型指定了 "ignore_above" 屬性,表示字段內容在超過 256 個字符時不分析;"integer" 類型指定了 "coerce" 屬性,在轉換數據類型時自動轉換相關數字。
總而言之,Mapping 是 Elasticsearch 中非常重要的一個概念,正確定義它可以大力提升搜索效率,代碼中 JSON 格式的 Mapping 定義也非常簡潔、易于學習應用,希望本文能夠對讀者有所啟發。