1. Collection別名
簡單理解,Collection 的別名是在solrColud云上的Collection做的又一層包裝,可以用一個(gè)別名的Collection對(duì)應(yīng)后臺(tái)多個(gè)實(shí)際的Collection。
優(yōu)點(diǎn):
1、可以將實(shí)際的Collection和客戶端程序分離開來,如果實(shí)際的collection改名了肤频,只需要更改別名即可,不需要更改客戶端程序算墨。
2宵荒、可以簡化跨越多個(gè)collection查詢操作,一個(gè)別名Collection可以對(duì)應(yīng)一個(gè)或多個(gè)后臺(tái)實(shí)際的Collection净嘀。
用處:
舉個(gè)例子:
假設(shè)我們需要保存一年的一個(gè)叫solr應(yīng)用程序的日志报咳,我們前臺(tái)需要完成,除當(dāng)月外前幾個(gè)月日志搜索和當(dāng)月日志搜索挖藏。
可以這樣設(shè)計(jì)暑刃,一個(gè)月數(shù)據(jù)保存在一個(gè)Collection上,建立一個(gè)別名假設(shè)叫CollectionOld指向除當(dāng)月外其他的月的Collection膜眠,
每當(dāng)新建一個(gè)Collection的時(shí)候岩臣,我們就默默的更改別名多指向一個(gè)月的Collection;
新建另外一個(gè)叫CollectionNow的Collection指向當(dāng)月的Collection宵膨,每次新建一個(gè)的時(shí)候就調(diào)整這兩個(gè)匿名的Collection即可架谎。
1、先用如下命令創(chuàng)建一個(gè)CollectionOld
/admin/collections?action=CREATEALIAS&name=CollectionOld&collections=solrCollection_201601,solrCollection_201602,solrCollection_201603
到了四月份新建一個(gè)solrCollection_201604
2辟躏、 新建一個(gè)Collection后執(zhí)行命令:
1) ?/admin/collections?action=DELETEALIAS&name=CollectionOld ?刪除原來別名谷扣。
2)/admin/collections?action=CREATEALIAS&name=CollectionOld&collections=solrCollection_201601,solrCollection_201602,solrCollection_201603,solrCollection_201604 創(chuàng)建新的匿名。
通過以上方式設(shè)計(jì)好處:
1捎琐、可以將非當(dāng)月的大量的不變的數(shù)據(jù)和當(dāng)月小量的實(shí)時(shí)變動(dòng)的數(shù)據(jù)分離開來会涎,如果再配合前臺(tái)的選項(xiàng),一定程度上實(shí)現(xiàn)了
讀寫分離瑞凑,在不變數(shù)據(jù)上做優(yōu)化末秃,將不會(huì)影響建索引的速度,而建索引同樣不會(huì)影響到不變數(shù)據(jù)部分的查詢性能籽御。
2. 定制文檔hash
我們知道练慕,solr在添加文檔建索引的時(shí)候,通過文檔id來進(jìn)行hash到具體哪一個(gè)shard上去篱蝇,從而實(shí)現(xiàn)一個(gè)Collection上的數(shù)據(jù)平衡性贺待。
但是這也有個(gè)弊端就是我們在做查詢的時(shí)候徽曲,需要到每個(gè)shard并行查詢零截,然后再將總結(jié)果返回,這一定程度上降低了性能秃臣。
solr支持一個(gè)特性就是我們可以通過特殊標(biāo)記文檔id涧衙,將這類文檔都建立在特定的shard上哪工,然后查詢的時(shí)候只需要設(shè)置下一個(gè)參數(shù)
就可以支持直接到這個(gè)shard查詢,從而提高了建索引的速度和查詢速度弧哎。(帶來的弊端就是一個(gè)Collection上的幾個(gè)shard上的文檔數(shù)量可能不均衡)
注意:這里的路由到特定的shard雁比,但是沒辦法路由的具體的shard的,這個(gè)和直接路由的區(qū)別在此撤嫩。
方法:就是文檔id以 偎捎!分隔,前面可以為指定一個(gè)標(biāo)示序攘,后面為原來的文檔id即可茴她,如solr!doc123.
solr利用了!前面的16個(gè)bit做hash程奠,又用了后面的16個(gè)bit做hash最終文檔ID的hash是將兩者組合起來丈牢。
查詢:
由于你指定了文檔的hash,那么在查詢的時(shí)候如果需要快速查詢則也需要特殊設(shè)置瞄沙,方法就是查詢時(shí)候添加參數(shù):_route_=solr! 即可以直接查詢到原來特定的shard上己沛。
如果需要設(shè)置多個(gè),可以用距境,號(hào)分隔申尼。比如:_route_=solr!,squid!
用處:
1、對(duì)于一些速率要求高的垫桂,日志量又不大的晶姊,又必須和其他日志混在一個(gè)collection中存儲(chǔ)的文檔,可以通過這種方式來指定伪货。