您好,登錄后才能下訂單哦!
這篇文章主要介紹“Elasticsearch單字段支持的最大字符數(shù)是多少”,在日常操作中,相信很多人在Elasticsearch單字段支持的最大字符數(shù)是多少問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”Elasticsearch單字段支持的最大字符數(shù)是多少”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
01
ignore_above的作用?
ES中用于設(shè)置超過(guò)設(shè)定字符后,不被索引或者存儲(chǔ)。
Strings longer than the
ignore_above
setting will not be indexed or stored.
02
ignore_above用法
PUT ali_test
{
"mappings": {
"ali_type": {
"properties": {
"url": {
"type":"keyword",
"ignore_above":256
},
"url_long": {
"type":"keyword"
},
"url_long_long": {
"type":"keyword",
"ignore_above":32766
}
}
}
}
}
03
當(dāng)字符超過(guò)給定長(zhǎng)度后,能否存入?
驗(yàn)證表名,對(duì)于以上mapping中設(shè)置的url,url_long,url_long_long3個(gè)字段。超過(guò)256字符的url,都可以存入。
3.1 keyword類型,普通長(zhǎng)度驗(yàn)證
插入url長(zhǎng)度為:1705個(gè)字符,如下所示:
post ali_test/ali_type/1
{
"url" : "1705個(gè)字符的url"
}
url參考地址:http://t.cn/zH6FHG7
檢索:
GET ali_test/ali_type/_search
{
"query": {
"term": {
"url" : "1705個(gè)字符的url"
}
}
}
返回結(jié)果:
{
"took": 1,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 0,
"max_score": null,
"hits": []
}
}
結(jié)論:
1705個(gè)字符,url、url_long、url_long_long都可以存入,可以通過(guò)head插件查看結(jié)果。
但是url term檢索無(wú)法檢索返回結(jié)果,原因: url字段設(shè)置了"ignore_above":256,導(dǎo)致超出256個(gè)字符后不被索引。
3.2 對(duì)于keyword類型,臨界長(zhǎng)度驗(yàn)證
post 32767個(gè)字符的文檔,報(bào)錯(cuò)如下:
{
"error":{
"root_cause":[
{"type":"illegal_argument_exception",
"reason":"Document contains at least one immense term in field="url_long" (whose UTF8 encoding is longer than the max length 32766), all of which were skipped. Please correct the analyzer to not produce such terms. The prefix of the first immense term is: '[104, 116, 116, 112, 58, 47, 47, 119, 119, 119, 46, 103, 111, 111, 103, 108, 101, 46, 99, 111, 109, 47, 115, 101, 97, 114, 99, 104, 63, 104]...', original message: bytes can be at most 32766 in length; got 32767"
}
],
"caused_by":{"type":"max_bytes_length_exceeded_exception",
"reason":"max_bytes_length_exceeded_exception: bytes can be at most 32766 in length; got 32767"
}
},
"status":400}
post 32766個(gè)字符后,能提交成功,返回結(jié)果如下:
{
"_index": "ali_test",
"_type": "ali_type",
"_id": "2000",
"_version": 1,
"result": "created",
"_shards": {
"total": 2,
"successful": 2,
"failed": 0
},
"created": true
}
結(jié)論:keyword類型的最大支持的長(zhǎng)度為——32766個(gè)UTF-8類型的字符。
也就是說(shuō)term精確匹配的最大支持的長(zhǎng)度為32766個(gè)UTF-8個(gè)字符。
04
text類型和keyword類型的存儲(chǔ)字符數(shù)區(qū)別?
text類型:支持分詞、全文檢索,不支持聚合、排序操作。適合大字段存儲(chǔ),如:文章詳情、content字段等;
keyword類型:支持精確匹配,支持聚合、排序操作。適合精準(zhǔn)字段匹配,如:url、name、title等字段。
一般情況,text和keyword共存,設(shè)置mapping如下:
{
"mappings": {
"ali_type": {
"properties": {
"title_v1": {
"analyzer":"ik_max_word",
"type":"text",
"term_vector" : "with_positions_offsets",
"fields":{
"keyword":{
"ignore_above":256,
"type":"keyword"
}
}
}
}
}
}
}
到此,關(guān)于“Elasticsearch單字段支持的最大字符數(shù)是多少”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。