es版本6.8
因為阿里雲的dts同步最高支持es版本就是6.8
構建索引
PUT /z_test/ { "mappings": { "doc": { "properties": { "name": { "type": "text", "fields": { "keyword": { "type": "keyword", "ignore_above": 256 } } } } } } }
在action.auto_create_index為true的情況下,無需此步操作
插入測試數據
POST /z_test/doc { "name":"測試" }
POST /z_test/doc { "name":"測試123" }
POST /z_test/doc { "name":"測間隔間隔試" }
如果在action.auto_create_index為true的情況下,此步操作會自動創建索引
查詢
GET /z_test/doc/_search { "explain": false, "query": { "match_phrase": { "name": "測試" } } }
該查詢會返回 測試和測試123的數據
如果想只返回測試的話,應使用以下查詢
GET /z_test/doc/_search { "explain": false, "query": { "match_phrase": { "name.keyword": "測試" } } }
在es5.0以上的版本string類型被text類型代替,默認情況下載text下還會有個字段為keyword,ignore_above為截斷字符長度,默認為256,該字段不走分詞,所以通過該字段查詢可以得到精確匹配
擴展
若想得到 測間隔間隔試 的數據可使用以下查詢
GET /z_test/doc/_search { "explain": false, "query": { "match_phrase": { "name": { "query": "測試", "slop": 4 } } } }
slop字段的意思為間隔幾個詞可以被搜索到
具體底層怎么存的看這篇文章
https://blog.csdn.net/hsj1213522415/article/details/96743988