我們進(jìn)行檢索時(shí),通常需要既支持模糊搜索也支持精確搜索,下面是elasticsearch的實(shí)現(xiàn)方式
情況1: 空索引
這種情況,非常的簡(jiǎn)單,只要給予一個(gè)字段兩種解析方式即可
"properties": {
????"name": {
????????"analyzer":"ik_smart",
????????"type":"text",
????????"fields": {
????????????"keyword": {
????????????????"type":"keyword",
????????????????"ignore_above":256
????????????}?
?????????}?
?????}
}
情況2: 非空索引
1. 此時(shí)企量,首先修改mapping的配置
curl -H "Content-Type:application/json" -X PUT http://127.0.0.1:9220/my_index/_doc/_mapping -d '{
"properties":{
????"name":{
????????"analyzer":"ik_smart",
????????"type":"text",
????????"fields":{
????????????"keyword":{
????????????????"type":"keyword",
????????????????"ignore_above":256
????????????}?
?????????}?
?????}?
?}
}'
2. 更新歷史數(shù)據(jù) 因?yàn)榇藭r(shí)索引中已有數(shù)據(jù),修改mapping后僅只對(duì)之后的數(shù)據(jù)生效亡电,對(duì)于歷史數(shù)據(jù)是不會(huì)生效的届巩,所以需要我們對(duì)歷史數(shù)據(jù)進(jìn)行更新,因?yàn)槲覀儾⒉桓淖儦v史數(shù)據(jù)的source份乒,所以可通過(guò)_update_by_query實(shí)現(xiàn)
創(chuàng)建任務(wù):
curl -H "Content-Type:application/json" -X POST -d '{
? "query": {
? ? "bool": {
? ? ? "must_not": {
? ? ? ? "exists": {
? ? ? ? ? "field": "name.keyword"
? ? ? ? }
? ? ? }
? ? }
? }
} 'http://127.0.0.1:9220/my_index/_update_by_query?conflicts=proceed&scroll_size=5000&wait_for_completion=false
查看任務(wù)完成狀態(tài):
curl -X GET http://127.0.0.1:9220/_tasks/6xUTqL-pRqmqo_Qxw5PfEQ:830225002
推薦:?浮生無(wú)事的博客