Elaticsearch,簡稱為 ES, ES 是一個(gè)開源的高擴(kuò)展的分布式全文搜索引擎,Elasticsearch 是面向文檔型數(shù)據(jù)庫,一條數(shù)據(jù)在這里就是一個(gè)文檔。 基本要素ES是一個(gè)文檔型數(shù)據(jù)庫,在與傳統(tǒng)的關(guān)系型數(shù)據(jù)庫上,存在著一定的差異。下面將ES里面涉及到的元素與關(guān)系型數(shù)據(jù)庫進(jìn)行一一對應(yīng)。
索引操作創(chuàng)建索引向 ES 服務(wù)器發(fā) PUT 請求 : { "acknowledged": true,//響應(yīng)結(jié)果 "shards_acknowledged": true,//分片結(jié)果 "index": "shopping"//索引名稱 } 查詢索引向 ES 服務(wù)器發(fā) GET 請求 : { "shopping": {//索引名 "aliases": {},//別名 "mappings": {},//映射 "settings": {//設(shè)置 "index": {//設(shè)置 - 索引 "creation_date": "1617861426847",//設(shè)置 - 索引 - 創(chuàng)建時(shí)間 "number_of_shards": "1",//設(shè)置 - 索引 - 主分片數(shù)量 "number_of_replicas": "1",//設(shè)置 - 索引 - 主分片數(shù)量 "uuid": "J0WlEhh4R7aDrfIc3AkwWQ",//設(shè)置 - 索引 - 主分片數(shù)量 "version": {//設(shè)置 - 索引 - 主分片數(shù)量 "created": "7080099" }, "provided_name": "shopping"//設(shè)置 - 索引 - 主分片數(shù)量 } } } } 查看所有索引向 ES 服務(wù)器發(fā) GET 請求 : 這里請求路徑中的_cat 表示查看的意思, indices 表示索引,所以整體含義就是查看當(dāng)前 ES服務(wù)器中的所有索引,就好像 MySQL 中的 show tables 的感覺,服務(wù)器響應(yīng)結(jié)果如下 : health status index uuid pri rep docs.count docs.deleted store.size pri.store.size yellow open shopping J0WlEhh4R7aDrfIc3AkwWQ 1 1 0 0 208b 208b 刪除索引向 ES 服務(wù)器發(fā) DELETE 請求 : 返回結(jié)果如下: { "acknowledged": true } 文檔操作文檔創(chuàng)建假設(shè)索引已經(jīng)創(chuàng)建好了,接下來我們來創(chuàng)建文檔,并添加數(shù)據(jù)。這里的文檔可以類比為關(guān)系型數(shù)據(jù)庫中的表數(shù)據(jù),添加的數(shù)據(jù)格式為 JSON 格式 在 Postman 中,向 ES 服務(wù)器發(fā) POST 請求 : { "title":"小米手機(jī)", "category":"小米", "images":"http://www./xm.jpg", "price":3999.00 } 返回結(jié)果 { "_index": "shopping",//索引 "_type": "_doc",//類型-文檔 "_id": "ANQqsHgBaKNfVnMbhZYU",//唯一標(biāo)識,可以類比為 MySQL 中的主鍵,隨機(jī)生成 "_version": 1,//版本 "result": "created",//結(jié)果,這里的 create 表示創(chuàng)建成功 "_shards": {// "total": 2,//分片 - 總數(shù) "successful": 1,//分片 - 總數(shù) "failed": 0//分片 - 總數(shù) }, "_seq_no": 0, "_primary_term": 1 }
上面的數(shù)據(jù)創(chuàng)建后,由于沒有指定數(shù)據(jù)唯一性標(biāo)識(ID),默認(rèn)情況下, ES 服務(wù)器會隨機(jī)生成一個(gè)。 如果想要自定義唯一性標(biāo)識,需要在創(chuàng)建時(shí)指定: { "title":"小米手機(jī)", "category":"小米", "images":"http://www./xm.jpg", "price":3999.00 } 返回結(jié)果如下: { "_index": "shopping", "_type": "_doc", "_id": "1",//<-----自定義唯一性標(biāo)識 "_version": 1, "result": "created", "_shards": { "total": 2, "successful": 1, "failed": 0 }, "_seq_no": 1, "_primary_term": 1 } 文檔查詢查看文檔時(shí),需要指明文檔的唯一性標(biāo)識,類似于 MySQL 中數(shù)據(jù)的主鍵查詢 返回結(jié)果如下: { "_index": "shopping", "_type": "_doc", "_id": "1", "_version": 1, "_seq_no": 1, "_primary_term": 1, "found": true, "_source": { "title": "小米手機(jī)", "category": "小米", "images": "http://www./xm.jpg", "price": 3999 } } 查找不存在的內(nèi)容,向 ES 服務(wù)器發(fā) GET 請求 : http://127.0.0.1:9200/shopping/_doc/1001。返回結(jié)果如下: { "_index": "shopping", "_type": "_doc", "_id": "1001", "found": false } 查看索引下所有數(shù)據(jù),向 ES 服務(wù)器發(fā) GET 請求 : 返回結(jié)果如下: { "took": 133, "timed_out": false, "_shards": { "total": 1, "successful": 1, "skipped": 0, "failed": 0 }, "hits": { "total": { "value": 2, "relation": "eq" }, "max_score": 1, "hits": [ { "_index": "shopping", "_type": "_doc", "_id": "ANQqsHgBaKNfVnMbhZYU", "_score": 1, "_source": { "title": "小米手機(jī)", "category": "小米", "images": "http://www./xm.jpg", "price": 3999 } }, { "_index": "shopping", "_type": "_doc", "_id": "1", "_score": 1, "_source": { "title": "小米手機(jī)", "category": "小米", "images": "http://www./xm.jpg", "price": 3999 } } ] } } 文檔刪除刪除一個(gè)文檔不會立即從磁盤上移除,它只是被標(biāo)記成已刪除(邏輯刪除)。 在 Postman 中,向 ES 服務(wù)器發(fā) DELETE 請求 : { "_index": "shopping", "_type": "_doc", "_id": "1", "_version": 4, "result": "deleted",//<---刪除成功 "_shards": { "total": 2, "successful": 1, "failed": 0 }, "_seq_no": 4, "_primary_term": 1 } 文檔修改全量修改和新增文檔一樣,輸入相同的 URL 地址請求,如果請求體變化,會將原有的數(shù)據(jù)內(nèi)容覆蓋 在 Postman 中,向 ES 服務(wù)器發(fā) POST 請求 : { "title":"華為手機(jī)", "category":"華為", "images":"http://www./hw.jpg", "price":1999.00 } 修改成功后,服務(wù)器響應(yīng)結(jié)果: { "_index": "shopping", "_type": "_doc", "_id": "1", "_version": 2, "result": "updated",//<---updated 表示數(shù)據(jù)被更新 "_shards": { "total": 2, "successful": 1, "failed": 0 }, "_seq_no": 2, "_primary_term": 1 } 局部更新修改數(shù)據(jù)時(shí),也可以只修改某一給條數(shù)據(jù)的局部信息 在 Postman 中,向 ES 服務(wù)器發(fā) POST 請求 : 請求體JSON內(nèi)容為: { "doc": { "title":"小米手機(jī)", "category":"小米" } } 返回結(jié)果如下: { "_index": "shopping", "_type": "_doc", "_id": "1", "_version": 3, "result": "updated",//<----updated 表示數(shù)據(jù)被更新 "_shards": { "total": 2, "successful": 1, "failed": 0 }, "_seq_no": 3, "_primary_term": 1 } URL待條件查詢查找category為小米的文檔,在 Postman 中,向 ES 服務(wù)器發(fā) GET請求 : { "took": 94, "timed_out": false, "_shards": { "total": 1, "successful": 1, "skipped": 0, "failed": 0 }, "hits": { "total": { "value": 3, "relation": "eq" }, "max_score": 1.3862942, "hits": [ { "_index": "shopping", "_type": "_doc", "_id": "ANQqsHgBaKNfVnMbhZYU", "_score": 1.3862942, "_source": { "title": "小米手機(jī)", "category": "小米", "images": "http://www./xm.jpg", "price": 3999 } }, ...... ] } } 上述為URL帶參數(shù)形式查詢,這很容易讓不善者心懷惡意,或者參數(shù)值出現(xiàn)中文會出現(xiàn)亂碼情況。為了避免這些情況,我們可用使用帶JSON請求體請求進(jìn)行查詢。 請求體帶參查詢接下帶JSON請求體,還是查找category為小米的文檔,在 Postman 中,向 ES 服務(wù)器發(fā) GET請求 : { "query":{ "match":{ "category":"小米" } } } 返回結(jié)果如下: { "took": 3, "timed_out": false, "_shards": { "total": 1, "successful": 1, "skipped": 0, "failed": 0 }, "hits": { "total": { "value": 3, "relation": "eq" }, "max_score": 1.3862942, "hits": [ { "_index": "shopping", "_type": "_doc", "_id": "ANQqsHgBaKNfVnMbhZYU", "_score": 1.3862942, "_source": { "title": "小米手機(jī)", "category": "小米", "images": "http://www./xm.jpg", "price": 3999 } }, ...... ] } } 帶請求體方式的查找所有內(nèi)容查找所有文檔內(nèi)容,也可以這樣,在 Postman 中,向 ES 服務(wù)器發(fā) GET請求 : { "query":{ "match_all":{} } } 則返回所有文檔內(nèi)容: { "took": 2, "timed_out": false, "_shards": { "total": 1, "successful": 1, "skipped": 0, "failed": 0 }, "hits": { "total": { "value": 6, "relation": "eq" }, "max_score": 1, "hits": [ { "_index": "shopping", "_type": "_doc", "_id": "ANQqsHgBaKNfVnMbhZYU", "_score": 1, "_source": { "title": "小米手機(jī)", "category": "小米", "images": "http://www./xm.jpg", "price": 3999 } }, ...... ] } } 查詢指定字段如果你想查詢指定字段,在 Postman 中,向 ES 服務(wù)器發(fā) GET請求 : { "query":{ "match_all":{} }, "_source":["title"] } 返回結(jié)果如下: { "took": 5, "timed_out": false, "_shards": { "total": 1, "successful": 1, "skipped": 0, "failed": 0 }, "hits": { "total": { "value": 6, "relation": "eq" }, "max_score": 1, "hits": [ { "_index": "shopping", "_type": "_doc", "_id": "ANQqsHgBaKNfVnMbhZYU", "_score": 1, "_source": { "title": "小米手機(jī)" } }, ...... ] } } 分頁查詢在 Postman 中,向 ES 服務(wù)器發(fā) GET請求 : { "query":{ "match_all":{} }, "from":0, "size":2 } 返回結(jié)果如下: { "took": 1, "timed_out": false, "_shards": { "total": 1, "successful": 1, "skipped": 0, "failed": 0 }, "hits": { "total": { "value": 6, "relation": "eq" }, "max_score": 1, "hits": [ { "_index": "shopping", "_type": "_doc", "_id": "ANQqsHgBaKNfVnMbhZYU", "_score": 1, "_source": { "title": "小米手機(jī)", "category": "小米", "images": "http://www./xm.jpg", "price": 3999 } }, ] } } 查詢排序如果你想通過排序查出價(jià)格最高的手機(jī),在 Postman 中,向 ES 服務(wù)器發(fā) GET請求 : { "query":{ "match_all":{} }, "sort":{ "price":{ "order":"desc" } } } 返回結(jié)果如下: { "took": 96, "timed_out": false, "_shards": { "total": 1, "successful": 1, "skipped": 0, "failed": 0 }, "hits": { "total": { "value": 6, "relation": "eq" }, "max_score": null, "hits": [ { "_index": "shopping", "_type": "_doc", "_id": "ANQqsHgBaKNfVnMbhZYU", "_score": null, "_source": { "title": "小米手機(jī)", "category": "小米", "images": "http://www./xm.jpg", "price": 3999 }, "sort": [ 3999 ] }, ...... ] } } 多條件查詢假設(shè)想找出小米牌子,價(jià)格為3999元的。(must相當(dāng)于數(shù)據(jù)庫的&&),在 Postman 中,向 ES 服務(wù)器發(fā) GET請求 : { "query":{ "bool":{ "must":[{ "match":{ "category":"小米" } },{ "match":{ "price":3999.00 } }] } } } 返回結(jié)果如下: { "took": 134, "timed_out": false, "_shards": { "total": 1, "successful": 1, "skipped": 0, "failed": 0 }, "hits": { "total": { "value": 1, "relation": "eq" }, "max_score": 2.3862944, "hits": [ { "_index": "shopping", "_type": "_doc", "_id": "ANQqsHgBaKNfVnMbhZYU", "_score": 2.3862944, "_source": { "title": "小米手機(jī)", "category": "小米", "images": "http://www./xm.jpg", "price": 3999 } } ] } } 假設(shè)想找出小米和華為的牌子。(should相當(dāng)于數(shù)據(jù)庫的||)在 Postman 中,向 ES 服務(wù)器發(fā) GET請求 : { "query":{ "bool":{ "should":[{ "match":{ "category":"小米" } },{ "match":{ "category":"華為" } }] }, "filter":{ "range":{ "price":{ "gt":2000 } } } } } 返回結(jié)果如下: { "took": 8, "timed_out": false, "_shards": { "total": 1, "successful": 1, "skipped": 0, "failed": 0 }, "hits": { "total": { "value": 6, "relation": "eq" }, "max_score": 1.3862942, "hits": [ { "_index": "shopping", "_type": "_doc", "_id": "ANQqsHgBaKNfVnMbhZYU", "_score": 1.3862942, "_source": { "title": "小米手機(jī)", "category": "小米", "images": "http://www./xm.jpg", "price": 3999 } }, ..... ] } } 范圍查詢假設(shè)想找出小米和華為的牌子,價(jià)格大于2000元的手機(jī)。在 Postman 中,向 ES 服務(wù)器發(fā) GET請求 : { "query":{ "bool":{ "should":[{ "match":{ "category":"小米" } },{ "match":{ "category":"華為" } }], "filter":{ "range":{ "price":{ "gt":2000 } } } } } } 返回結(jié)果如下: { "took": 72, "timed_out": false, "_shards": { "total": 1, "successful": 1, "skipped": 0, "failed": 0 }, "hits": { "total": { "value": 1, "relation": "eq" }, "max_score": 1.3862942, "hits": [ { "_index": "shopping", "_type": "_doc", "_id": "ANQqsHgBaKNfVnMbhZYU", "_score": 1.3862942, "_source": { "title": "小米手機(jī)", "category": "小米", "images": "http://www./xm.jpg", "price": 3999 } } ] } } 全文檢索這功能像搜索引擎那樣,如品牌輸入“小華”,返回結(jié)果帶回品牌有“小米”和華為的。在 Postman 中,向 ES 服務(wù)器發(fā) GET請求 : { "query":{ "match":{ "category" : "小華" } } } 返回結(jié)果如下: { "took": 7, "timed_out": false, "_shards": { "total": 1, "successful": 1, "skipped": 0, "failed": 0 }, "hits": { "total": { "value": 6, "relation": "eq" }, "max_score": 0.6931471, "hits": [ { "_index": "shopping", "_type": "_doc", "_id": "ANQqsHgBaKNfVnMbhZYU", "_score": 0.6931471, "_source": { "title": "小米手機(jī)", "category": "小米", "images": "http://www./xm.jpg", "price": 3999 } }, ...... { "_index": "shopping", "_type": "_doc", "_id": "BtR6sHgBaKNfVnMbX5Y5", "_score": 0.6931471, "_source": { "title": "華為手機(jī)", "category": "華為", "images": "http://www./xm.jpg", "price": 1999 } }, ...... ] } } 完全匹配在 Postman 中,向 ES 服務(wù)器發(fā) GET請求 : { "query":{ "match_phrase":{ "category" : "為" } } } 返回結(jié)果如下: { "took": 2, "timed_out": false, "_shards": { "total": 1, "successful": 1, "skipped": 0, "failed": 0 }, "hits": { "total": { "value": 3, "relation": "eq" }, "max_score": 0.6931471, "hits": [ { "_index": "shopping", "_type": "_doc", "_id": "BtR6sHgBaKNfVnMbX5Y5", "_score": 0.6931471, "_source": { "title": "華為手機(jī)", "category": "華為", "images": "http://www./xm.jpg", "price": 1999 } }, ...... ] } } 高亮查詢在 Postman 中,向 ES 服務(wù)器發(fā) GET請求 : { "query":{ "match_phrase":{ "category" : "為" } }, "highlight":{ "fields":{ "category":{}//<----高亮這字段 } } } 返回結(jié)果如下: { "took": 100, "timed_out": false, "_shards": { "total": 1, "successful": 1, "skipped": 0, "failed": 0 }, "hits": { "total": { "value": 3, "relation": "eq" }, "max_score": 0.6931471, "hits": [ { "_index": "shopping", "_type": "_doc", "_id": "BtR6sHgBaKNfVnMbX5Y5", "_score": 0.6931471, "_source": { "title": "華為手機(jī)", "category": "華為", "images": "http://www./xm.jpg", "price": 1999 }, "highlight": { "category": [ "華<em>為</em>"//<------高亮一個(gè)為字。 ] } }, { "_index": "shopping", "_type": "_doc", "_id": "B9R6sHgBaKNfVnMbZpZ6", "_score": 0.6931471, "_source": { "title": "華為手機(jī)", "category": "華為", "images": "http://www./xm.jpg", "price": 1999 }, "highlight": { "category": [ "華<em>為</em>" ] } }, { "_index": "shopping", "_type": "_doc", "_id": "CdR7sHgBaKNfVnMbsJb9", "_score": 0.6931471, "_source": { "title": "華為手機(jī)", "category": "華為", "images": "http://www./xm.jpg", "price": 1999 }, "highlight": { "category": [ "華<em>為</em>" ] } } ] } } 分組查詢在 Postman 中,向 ES 服務(wù)器發(fā) GET請求 : { "aggs":{//聚合操作 "price_group":{//名稱,隨意起名 "terms":{//分組 "field":"price"//分組字段 } } } } 返回結(jié)果如下: { "took": 63, "timed_out": false, "_shards": { "total": 1, "successful": 1, "skipped": 0, "failed": 0 }, "hits": { "total": { "value": 6, "relation": "eq" }, "max_score": 1, "hits": [ { "_index": "shopping", "_type": "_doc", "_id": "ANQqsHgBaKNfVnMbhZYU", "_score": 1, "_source": { "title": "小米手機(jī)", "category": "小米", "images": "http://www./xm.jpg", "price": 3999 } }, { "_index": "shopping", "_type": "_doc", "_id": "A9R5sHgBaKNfVnMb25Ya", "_score": 1, "_source": { "title": "小米手機(jī)", "category": "小米", "images": "http://www./xm.jpg", "price": 1999 } }, { "_index": "shopping", "_type": "_doc", "_id": "BNR5sHgBaKNfVnMb7pal", "_score": 1, "_source": { "title": "小米手機(jī)", "category": "小米", "images": "http://www./xm.jpg", "price": 1999 } }, { "_index": "shopping", "_type": "_doc", "_id": "BtR6sHgBaKNfVnMbX5Y5", "_score": 1, "_source": { "title": "華為手機(jī)", "category": "華為", "images": "http://www./xm.jpg", "price": 1999 } }, { "_index": "shopping", "_type": "_doc", "_id": "B9R6sHgBaKNfVnMbZpZ6", "_score": 1, "_source": { "title": "華為手機(jī)", "category": "華為", "images": "http://www./xm.jpg", "price": 1999 } }, { "_index": "shopping", "_type": "_doc", "_id": "CdR7sHgBaKNfVnMbsJb9", "_score": 1, "_source": { "title": "華為手機(jī)", "category": "華為", "images": "http://www./xm.jpg", "price": 1999 } } ] }, "aggregations": { "price_group": { "doc_count_error_upper_bound": 0, "sum_other_doc_count": 0, "buckets": [ { "key": 1999, "doc_count": 5 }, { "key": 3999, "doc_count": 1 } ] } } } 上面返回結(jié)果會附帶原始數(shù)據(jù)的。若不想要不附帶原始數(shù)據(jù)的結(jié)果,在 Postman 中,向 ES 服務(wù)器發(fā) GET請求 : { "aggs":{ "price_group":{ "terms":{ "field":"price" } } }, "size":0 } 返回結(jié)果如下: { "took": 60, "timed_out": false, "_shards": { "total": 1, "successful": 1, "skipped": 0, "failed": 0 }, "hits": { "total": { "value": 6, "relation": "eq" }, "max_score": null, "hits": [] }, "aggregations": { "price_group": { "doc_count_error_upper_bound": 0, "sum_other_doc_count": 0, "buckets": [ { "key": 1999, "doc_count": 5 }, { "key": 3999, "doc_count": 1 } ] } } } 查詢平均值在 Postman 中,向 ES 服務(wù)器發(fā) GET請求 : { "aggs":{ "price_avg":{//名稱,隨意起名 "avg":{//求平均 "field":"price" } } }, "size":0 } 返回結(jié)果如下: { "took": 14, "timed_out": false, "_shards": { "total": 1, "successful": 1, "skipped": 0, "failed": 0 }, "hits": { "total": { "value": 6, "relation": "eq" }, "max_score": null, "hits": [] }, "aggregations": { "price_avg": { "value": 2332.3333333333335 } } } 映射關(guān)系有了索引庫,等于有了數(shù)據(jù)庫中的 database。接下來就需要建索引庫(index)中的映射了,類似于數(shù)據(jù)庫(database)中的表結(jié)構(gòu)(table)。創(chuàng)建數(shù)據(jù)庫表需要設(shè)置字段名稱,類型,長度,約束等;索引庫也一樣,需要知道這個(gè)類型下有哪些字段,每個(gè)字段有哪些約束信息,這就叫做映射(mapping)。 # PUT http://127.0.0.1:9200/user 返回結(jié)果: { "acknowledged": true, "shards_acknowledged": true, "index": "user" } 創(chuàng)建映射 # PUT http://127.0.0.1:9200/user/_mapping { "properties": { "name":{ "type": "text", "index": true }, "sex":{ "type": "keyword", "index": true }, "tel":{ "type": "keyword", "index": false } } } 返回結(jié)果如下: { "acknowledged": true } 查詢映射 #GET http://127.0.0.1:9200/user/_mapping 返回結(jié)果如下: { "user": { "mappings": { "properties": { "name": { "type": "text" }, "sex": { "type": "keyword" }, "tel": { "type": "keyword", "index": false } } } } } 增加數(shù)據(jù) #PUT http://127.0.0.1:9200/user/_create/1001 { "name":"小米", "sex":"男的", "tel":"1111" } 返回結(jié)果如下: { "_index": "user", "_type": "_doc", "_id": "1001", "_version": 1, "result": "created", "_shards": { "total": 2, "successful": 1, "failed": 0 }, "_seq_no": 0, "_primary_term": 1 } 查找name含有”小“數(shù)據(jù): #GET http://127.0.0.1:9200/user/_search { "query":{ "match":{ "name":"小" } } } 返回結(jié)果如下: { "took": 495, "timed_out": false, "_shards": { "total": 1, "successful": 1, "skipped": 0, "failed": 0 }, "hits": { "total": { "value": 1, "relation": "eq" }, "max_score": 0.2876821, "hits": [ { "_index": "user", "_type": "_doc", "_id": "1001", "_score": 0.2876821, "_source": { "name": "小米", "sex": "男的", "tel": "1111" } } ] } } 查找sex含有”男“數(shù)據(jù): #GET http://127.0.0.1:9200/user/_search { "query":{ "match":{ "sex":"男" } } } 返回結(jié)果如下: { "took": 1, "timed_out": false, "_shards": { "total": 1, "successful": 1, "skipped": 0, "failed": 0 }, "hits": { "total": { "value": 0, "relation": "eq" }, "max_score": null, "hits": [] } } 找不想要的結(jié)果,只因創(chuàng)建映射時(shí)"sex"的類型為"keyword"。"sex"只能完全為”男的“,才能得出原數(shù)據(jù)。 #GET http://127.0.0.1:9200/user/_search { "query":{ "match":{ "sex":"男的" } } } 返回結(jié)果如下: { "took": 2, "timed_out": false, "_shards": { "total": 1, "successful": 1, "skipped": 0, "failed": 0 }, "hits": { "total": { "value": 1, "relation": "eq" }, "max_score": 0.2876821, "hits": [ { "_index": "user", "_type": "_doc", "_id": "1001", "_score": 0.2876821, "_source": { "name": "小米", "sex": "男的", "tel": "1111" } } ] } } 查詢電話 # GET http://127.0.0.1:9200/user/_search { "query":{ "match":{ "tel":"11" } } } 返回結(jié)果如下: { "error": { "root_cause": [ { "type": "query_shard_exception", "reason": "failed to create query: Cannot search on field [tel] since it is not indexed.", "index_uuid": "ivLnMfQKROS7Skb2MTFOew", "index": "user" } ], "type": "search_phase_execution_exception", "reason": "all shards failed", "phase": "query", "grouped": true, "failed_shards": [ { "shard": 0, "index": "user", "node": "4P7dIRfXSbezE5JTiuylew", "reason": { "type": "query_shard_exception", "reason": "failed to create query: Cannot search on field [tel] since it is not indexed.", "index_uuid": "ivLnMfQKROS7Skb2MTFOew", "index": "user", "caused_by": { "type": "illegal_argument_exception", "reason": "Cannot search on field [tel] since it is not indexed." } } } ] }, "status": 400 } 報(bào)錯只因創(chuàng)建映射時(shí)"tel"的"index"為false。 |
|