什么是es

es是面向文档型的数据库,一条数据在es数据库就是一个文档,和关系型数据库做一个类比:
1:es的索引类比关系型数据库的数据库,
2:es的type类比数据表(7.0版本以上删除了type这个概念),
3:es的索引下的文档document类比关系型数据库的行,新增时可以指定文档主键id,不指定会自动生成
4:es的文档中的字段类比关系关系型数据库的列。

现实生产中一般一个索引类似张表,但是一个索引下的字段还可以是一个对象,可以嵌套。
match每一次全文搜索分词是针对某一个字段的,可以是嵌套搜索,一次全文搜索不是针对整个索引的全部字段,想要同时全文搜多个字段可以一次请求中match多个字段

put请求新建索引,post/put请求新增数据,新增的数据就是一个文档,新增会有一个文档id就是索引下一个数据的主键

涉及的操作索引的增删改查和文档的增删改查

什么是倒排索引

es基本入门操作

1.安装访问
在本地es执行目录:/Users/liuqinhua/Desktop/错误/elasticsearch-7.6.2/bin
执行可执行文件:./elasticsearch
访问

2.创建索引put请求http://localhost:9200/liuqinhua(liuqinhua是索引名)

3**.get请求查看索引信息**:http://localhost:9200/索引名
例如:http://localhost:9200/liuqinhua

4.get请求查看所有的索引:http://localhost:9200/_cat/indices?v
这时候他是强制返回的内容是text格式的,所以会展示成表格的格式

5.delete请求删除索引wudonghui:http://localhost:9200/索引名
例如:http://localhost:9200/wudonghui

6.post请求给索引新增文档数据http://localhost:9200/索引名字/_doc
eg:http://localhost:9200/liuqinhua/_doc
这种会返回文档id
或者post或者put请求:http://localhost:9200/liuqinhua/_doc/自定义文档id


7.get请求查询索引的数据
查询某一个文档id内容
http://localhost:9200/索引名/_doc/文档id
例如:http://localhost:9200/liuqinhua/_doc/1001

get请求查询某一个索引下所有的文档
http://localhost:9200/索引名/_search
例如:
http://localhost:9200/liuqinhua/_search

put请求根据索引下的主键id全量修改更新某一条文档数据

格式:http://localhost:9200/索引名/_doc/数据主键id
eg:http://localhost:9200/liuqinhua/_doc/1001



put全量会把该主键id的文档数据变成这一次传入的


再更新一下:

post请求局部更新某索引下某主键文档id数据
http://localhost:9200/索引名/_update/文档主键id
eg:http://localhost:9200/liuqinhua/_update/1001

delete请求删除索引下某主键的文档
格式http://localhost:9200/索引名/_doc/文档主键id

条件查询

url拼接查询条件
格式:http://localhost:9200/liuqinhua/_search?q=文档下一级key :文档下一级value
二级的key-value是搜不出来的

查询条件放requestbody进行查询放入query-match里面

放requestbody全量查询索引下文档

分页查询

get请求http://localhost:9200/索引名/_search加reqbody里面的多条件查询和范围查询

reqbody内容

{"query":{"bool":{"should":[// must相当于mysql的and,should相当于or{"match":{"uname" :"forbidden"//"gender":26}},{"match":{//"uname" :"forbidden""gender":26}}],"filter":{//过滤"range":{//范围查询"gender":{"gt":26//gt表示大于,gender大于26岁的}}}}}
}

查出结果

{"took": 23,"timed_out": false,"_shards": {"total": 1,"successful": 1,"skipped": 0,"failed": 0},"hits": {"total": {"value": 4,"relation": "eq"},"max_score": 1.4769237,"hits": [{"_index": "user","_type": "_doc","_id": "-rD414IBzFC3z-tJgVq3","_score": 1.4769237,"_source": {"schoolId": "2000014495","teacherUid": "100000094198","uname": "forbidden zhang","unamePing": "forbiddenzhang","gender": 28}},{"_index": "user","_type": "_doc","_id": "-7D414IBzFC3z-tJ2Fqf","_score": 1.4769237,"_source": {"schoolId": "2000014485","teacherUid": "100000094198","uname": "forbidden city","unamePing": "forbiddencity","gender": 30}},{"_index": "user","_type": "_doc","_id": "_LD714IBzFC3z-tJBFra","_score": 1.4769237,"_source": {"schoolId": "2000014485","teacherUid": "100000094198","uname": "forbidden city","unamePing": "forbiddencity","gender": 30}},{"_index": "user","_type": "_doc","_id": "_bAC2IIBzFC3z-tJB1qB","_score": 0.0,"_source": {"schoolId": "2000014485","teacherUid": "100000094199","uname": "sijiali","unamePing": "sijiali","gender": 30}}]}
}

全文检索和完全匹配

url同上,全文检索的核心就是分词后用了倒排,,中文一个字会分做一个词,英文字母是以空格结束当做是一个单词做分词,连续没有空格的n个数字不会分成多个词

reqbody内容:”forbidden 小“把这两个字分词把还有forbidden 和小都查了出来

{"query":{"bool":{"must":[// must相当于mysql的and,should相当于or{"match":{"uname" :"sijiali 华"//"gender":26}},{"match":{"unamePing" :"sijiali liu"//"gender":26}}]}}
}
{"took": 146,"timed_out": false,"_shards": {"total": 1,"successful": 1,"skipped": 0,"failed": 0},"hits": {"total": {"value": 9,"relation": "eq"},"max_score": 4.4716845,"hits": [{"_index": "user","_type": "_doc","_id": "A7BM2IIBzFC3z-tJ01ts","_score": 4.4716845,"_source": {"schoolId": "2000014485","teacherUid": "100000094119","uname": "小华","unamePing": "sijiali liu","gender": 31}},{"_index": "user","_type": "_doc","_id": "ArBI2IIBzFC3z-tJuVt_","_score": 3.5823827,"_source": {"schoolId": "2000014485","teacherUid": "100000094119","uname": "a sijiali 100","unamePing": "sijiali liu","gender": 31}},{"_index": "user","_type": "_doc","_id": "BbBP2IIBzFC3z-tJA1sN","_score": 3.3120766,"_source": {"schoolId": "2000014485","teacherUid": "100000094119","uname": "小华","unamePing": "xiao liu hua","gender": 31}},{"_index": "user","_type": "_doc","_id": "BLBM2IIBzFC3z-tJ41s_","_score": 3.2610822,"_source": {"schoolId": "2000014485","teacherUid": "100000094119","uname": "小华","unamePing": "sijiali ","gender": 31}},{"_index": "user","_type": "_doc","_id": "_bAC2IIBzFC3z-tJB1qB","_score": 2.917797,"_source": {"schoolId": "2000014485","teacherUid": "100000094199","uname": "sijiali","unamePing": "sijiali","gender": 30}},{"_index": "user","_type": "_doc","_id": "_rAv2IIBzFC3z-tJrFrx","_score": 2.3717804,"_source": {"schoolId": "2000014485","teacherUid": "100000094199","uname": "a sijiali b","unamePing": "sijiali","gender": 30}},{"_index": "user","_type": "_doc","_id": "_7A12IIBzFC3z-tJBlrv","_score": 2.3717804,"_source": {"schoolId": "2000014485","teacherUid": "100000094119","uname": "a sijiali 9","unamePing": "sijiali","gender": 30}},{"_index": "user","_type": "_doc","_id": "ALA32IIBzFC3z-tJa1vV","_score": 2.3717804,"_source": {"schoolId": "2000014485","teacherUid": "100000094119","uname": "a sijiali 99","unamePing": "sijiali","gender": 30}},{"_index": "user","_type": "_doc","_id": "AbBE2IIBzFC3z-tJEFt2","_score": 2.3717804,"_source": {"schoolId": "2000014485","teacherUid": "100000094119","uname": "a sijiali 100","unamePing": "sijiali","gender": 31}}]}
}

完全匹配:把match改为match_phrase,相当于mysql的like “%str%”

{"query":{"bool":{"must":[// must相当于mysql的and,should相当于or{"match_phrase":{"uname" :"sijiali"//"gender":26}}]}}
}

返回

{"took": 2,"timed_out": false,"_shards": {"total": 1,"successful": 1,"skipped": 0,"failed": 0},"hits": {"total": {"value": 2,"relation": "eq"},"max_score": 2.581265,"hits": [{"_index": "user","_type": "_doc","_id": "_bAC2IIBzFC3z-tJB1qB","_score": 2.581265,"_source": {"schoolId": "2000014485","teacherUid": "100000094199","uname": "sijiali","unamePing": "sijiali","gender": 30}},{"_index": "user","_type": "_doc","_id": "_rAv2IIBzFC3z-tJrFrx","_score": 1.7744548,"_source": {"schoolId": "2000014485","teacherUid": "100000094199","uname": "a sijiali b","unamePing": "sijiali","gender": 30}}]}
}

分词中文和数字会分作两个词,字母和数字不会分做两个词

中文和数字

{"query":{"bool":{"must":[// must相当于mysql的and,should相当于or{"match":{"uname" :"小9"//"gender":26}}]}}
}返回{"took": 925,"timed_out": false,"_shards": {"total": 1,"successful": 1,"skipped": 0,"failed": 0},"hits": {"total": {"value": 4,"relation": "eq"},"max_score": 2.2984395,"hits": [{"_index": "user","_type": "_doc","_id": "_7A12IIBzFC3z-tJBlrv","_score": 2.2984395,"_source": {"schoolId": "2000014485","teacherUid": "100000094119","uname": "a sijiali 9","unamePing": "sijiali","gender": 30}},{"_index": "user","_type": "_doc","_id": "8bDn14IBzFC3z-tJ1lov","_score": 1.5314121,"_source": {"schoolId": "2000014494","teacherUid": "100000094187","uname": "刘小君","unamePing": "lingweijun01","gender": 23}},{"_index": "user","_type": "_doc","_id": "8LDm14IBzFC3z-tJDVor","_score": 1.5314121,"_source": {"schoolId": "2000014494","teacherUid": "100000094186","uname": "凌小君","unamePing": "lingweijun01","gender": 23}},{"_index": "user","_type": "_doc","_id": "77Dl14IBzFC3z-tJ2FrK","_score": 1.5314121,"_source": {"schoolId": "2000014494","teacherUid": "100000094185","uname": "凌小军","unamePing": "lingweijun01","gender": 23}}]}
}

英文和数字

{"query":{"bool":{"must":[// must相当于mysql的and,should相当于or{"match":{"uname" :"a99"//"gender":26}}]}}
}返回
{"took": 1,"timed_out": false,"_shards": {"total": 1,"successful": 1,"skipped": 0,"failed": 0},"hits": {"total": {"value": 0,"relation": "eq"},"max_score": null,"hits": []}
}

聚合查询

聚合查询相当于mysql的group by

{"aggs":{//定义聚合"fenzu":{//年龄进行分组,给聚合起个名字"terms":{//聚合的类型是 term"field":"gender"//参与聚合的字段"size": 10 // 希望获取的聚合结果数量}}},"size":0//表示不返回文档数组列表0条,设置size为0,结果中不包含文档,只包含聚合结果
}返回{"took": 25,"timed_out": false,"_shards": {"total": 1,"successful": 1,"skipped": 0,"failed": 0},"hits": {"total": {"value": 21,"relation": "eq"},"max_score": null,"hits": []},"aggregations": {"fenzu": {"doc_count_error_upper_bound": 0,"sum_other_doc_count": 0,"buckets": [{"key": 30,"doc_count": 6},{"key": 23,"doc_count": 5},{"key": 26,"doc_count": 4},{"key": 25,"doc_count": 2},{"key": 24,"doc_count": 1},{"key": 28,"doc_count": 1},{"key": 31,"doc_count": 1}]}}
}

映射关系

映射类似关系型数据库中的schema,描述了文档中有哪些字段和字段的类型,如string,data,int等。而 类型 是一组具有相关性的映射组成,然后使用"properties"来表示该类型中可能包含的字段属性。如果不设置,创建文档的时候会根据每个字段值自动匹配映射关系

可以通过mapping字段修改索引的映射关系

例如


put    http://ip:9200/index_name{"mappings": {"properties": {"realname": {"type": "text","index": true},"username": {"type": "keyword","index": false}}}
}text: 大的长文本,需要做分词,做倒排索引keyword: 不会被分词,也不会被做倒排索引。做精确匹配的搜索(比如订单状态,用的微信号,qq号,手机号)text , keyword 都是属于string类型。

ES 内置分词器

standard:默认分词,单词会被拆分,大小会转换为小写。
simple:按照非字母分词。大写转为小写。
whitespace:按照空格分词。忽略大小写。 s
top:去除无意义单词,比如 the / a / an / is …
keyword:不做分词。把整个文本作为一个单独的关键词

索引下字段的子字段类型,这种情况相当于是一个字段是一个对象的json字符串,但是索引的一级字段没下一层级字段,会有一个默认字段keyword

PUT index_name
{"mappings": {"properties": {"title": {               # 字段名称"type": "text",        # 字段类型"analyzer": "english", # 字段分词器"fields": {            # 多字段域,固定写法"std1": {             # 子字段名称"type": "text",    # 子字段类型"analyzer": "standard"  # 子字段分词器},"ziziduan":{"type": "text",    # 子字段类型"analyzer": "standard"  # 子字段分词器}}}}}
}

es嵌套字段是一个对象,第一层字段直接match搜不出来

content是一个对象,不是一个字符串
索引全部文档内容:

content是一个对象,不是一个字符串,直接match查嵌套字段里面内容查不出来,是一个字符串就可以,:

term查询完全匹配

进一步优化查询,因为是精准查询,不需要查询进行评分计算,只希望对文档进行包括或排除的计算,所以我们会使用 constant_score 查询以非评分模式来执行 term 查询并以一作为统一评分。推荐如下查询

参考

{"query":{"bool":{"should":[// must相当于mysql的and,should相当于or{"match":{"uname" :"forbidden"//"gender":26}},{"match":{//"uname" :"forbidden""gender":0}}],"filter":{//过滤"term":{"gender":30}}}}
}返回{"took": 3,"timed_out": false,"_shards": {"total": 1,"successful": 1,"skipped": 0,"failed": 0},"hits": {"total": {"value": 6,"relation": "eq"},"max_score": 1.8449266,"hits": [{"_index": "user","_type": "_doc","_id": "_LD714IBzFC3z-tJBFra","_score": 1.8449266,"_source": {"schoolId": "2000014485","teacherUid": "100000094198","uname": "forbidden city","unamePing": "forbiddencity","gender": 30}},{"_index": "user","_type": "_doc","_id": "-7D414IBzFC3z-tJ2Fqf","_score": 1.8449266,"_source": {"schoolId": "2000014485","teacherUid": "100000094198","uname": "forbidden city","unamePing": "forbiddencity","gender": 30}},{"_index": "user","_type": "_doc","_id": "_rAv2IIBzFC3z-tJrFrx","_score": 0.0,"_source": {"schoolId": "2000014485","teacherUid": "100000094199","uname": "a sijiali b","unamePing": "sijiali","gender": 30}},{"_index": "user","_type": "_doc","_id": "_bAC2IIBzFC3z-tJB1qB","_score": 0.0,"_source": {"schoolId": "2000014485","teacherUid": "100000094199","uname": "sijiali","unamePing": "sijiali","gender": 30}},{"_index": "user","_type": "_doc","_id": "_7A12IIBzFC3z-tJBlrv","_score": 0.0,"_source": {"schoolId": "2000014485","teacherUid": "100000094119","uname": "a sijiali 9","unamePing": "sijiali","gender": 30}},{"_index": "user","_type": "_doc","_id": "ALA32IIBzFC3z-tJa1vV","_score": 0.0,"_source": {"schoolId": "2000014485","teacherUid": "100000094119","uname": "a sijiali 99","unamePing": "sijiali","gender": 30}}]}
}

goland接入ES的api

配置

elastic:zlwenxue-cli:service: zlwenxue-cliaddr: "http://127.0.0.1:9200/"username: "liuqinhua" #电脑的账号密码password: "123456"gzip: false

代码

package esimport ("errors""github.com/gin-gonic/gin""github.com/olivere/elastic""reflect""zlwenxue-cli/components""zlwenxue-cli/helpers"
)/*** @Author: liuqinhua* @Date: 2022/8/29 11:03 AM*/
type User struct {SchoolId   string `json:"schoolId"`TeacherUid string `json:"teacherUid"`Uname      string `json:"uname"`UnamePing  string `json:"unamePing"`Gender     int    `json:"gender"`
}func AddUserEs(ctx *gin.Context, record *User) (id string, err error) {if record == nil {return "", errors.New("插入的数据为空")}responseBody, err := helpers.ElasticClient.Index().Index("user").BodyJson(record).Do(ctx)if err != nil {return "", components.ErrorEsInsert.Wrap(err)}return responseBody.Id, err
}func BoolQueryUser(ctx *gin.Context, schoolId, uname, unameping string, gender int) (userList []*User, err error) {boolquery := &elastic.BoolQuery{}if len(schoolId) > 0 {boolquery.Filter(elastic.NewTermQuery("schoolId", schoolId))}if gender > 0 {boolquery.Filter(elastic.NewTermQuery("gender", gender))}if len(unameping) > 0 { //should下面也可以完全匹配boolquery.Should(elastic.NewTermQuery("unamePing", unameping))}if len(uname) > 0 {boolquery.Should(elastic.NewMatchQuery("uname", uname))}searchByMatch, err := helpers.ElasticClient.Search("user").Query(boolquery).From(0).Size(11).Do(ctx)if err != nil {return userList, components.ErrorEsInsert.Wrap(err)}var resultType Userfor _, item := range searchByMatch.Each(reflect.TypeOf(resultType)) {answerHistory := item.(User)userList = append(userList, &answerHistory)}return
}

测试

package esimport ("fmt""github.com/gin-gonic/gin""net/http/httptest""testing""zlwenxue-cli/test"
)/*** @Author: liuqinhua* @Date: 2022/8/29 11:04 AM*/func TestUserEs(t *testing.T) {test.Init()ctx, _ := gin.CreateTestContext(httptest.NewRecorder())//answerHistoryEs := createQueryAnswerHistoryEs()user1 := &User{SchoolId:   "111111",TeacherUid: "123456123",UnamePing:  "goland test2",Uname:      "goland nihao test clients 111",}id, err := AddUserEs(ctx, user1)if err != nil {t.Errorf("%+v", err)return}fmt.Println(id)fmt.Println("=========")list, err := BoolQueryUser(ctx, "", "goland", "", 0)fmt.Println(len(list))for _, V := range list {fmt.Printf("%+v", V)fmt.Println()}
}

结果

match最小匹配度

match的字段下加上minimum_should_match可以加百分数也可以加数字
表示分词后必须命中的最小词数或者百分比
参考

book索引下的所有文档

{"took": 809,"timed_out": false,"_shards": {"total": 1,"successful": 1,"skipped": 0,"failed": 0},"hits": {"total": {"value": 5,"relation": "eq"},"max_score": 1.0,"hits": [{"_index": "book","_type": "_doc","_id": "BrCJ2YIBzFC3z-tJA1vB","_score": 1.0,"_source": {"bookId": "2000014485","title": "标题1","content": {"duanluo": "1","zhaiyao": "摘要1","内容": "啊啊啊不不不"}}},{"_index": "book","_type": "_doc","_id": "CLCu2YIBzFC3z-tJvVsG","_score": 1.0,"_source": {"bookId": "2000014485","title": "标题2","alltext": "{\"duanluo\": \"2\",\"zhaiyao\": \"摘要2\",\"内容\": \"啊啊啊不不不2222\"}"}},{"_index": "book","_type": "_doc","_id": "SM2e7IIBO-2eYCM19Rdj","_score": 1.0,"_source": {"bookId": "2000014486","title": "李小龙(英文名:Bruce Lee,1940年11月27日-1973年7月20日),本名李振藩,出生于美国加利福尼亚州旧金山","alltext": "1962年李小龙开办“振藩国术馆”,1967年自创截拳道,1973年7月20日,李小龙在香港逝世,年仅32岁。1979年美国洛杉矶市政府将补拍版《死亡游戏》的开映日6月8日定为“李小龙日”(7月8日为错误翻译)。1993年美国发行李小龙逝世20周年纪念钞票,好莱坞星光大道铺上李小龙纪念星徽;同年,获香港电影金像奖大会颁发“终身成就奖”。1998年11月,获中国武术协会颁发“武术电影巨星奖”。"}},{"_index": "book","_type": "_doc","_id": "Sc2f7IIBO-2eYCM1bxfY","_score": 1.0,"_source": {"bookId": "2000014486","title": "周星驰(Stephen Chow),1962年6月22日出生于香港,祖籍浙江省宁波市,中国香港影视男演员、导演、编剧、制作人、商人,毕业于无线电视艺员训练班","alltext": "1980年成为丽的电视台的特约演员,从而进入演艺圈。1981年出演个人首部电视剧《IQ成熟时》。1988年将演艺事业的重心转向大银幕,并于同年出演电影处女作《捕风汉子》。1990年凭借喜剧片《一本漫画闯天涯》确立其无厘头的表演风格;同年,因其主演的喜剧动作片《赌圣》打破香港地区票房纪录而获得关注。1991年主演喜剧片《逃学威龙》,并再次打破香港地区票房纪录 [1]  。1995年凭借喜剧爱情片《大话西游》奠定其在华语影坛的地位。1999年自导自演的喜剧片《喜剧之王》获得香港电影年度票房冠军 [2]  。"}},{"_index": "book","_type": "_doc","_id": "Ss2g7IIBO-2eYCM1NBeJ","_score": 1.0,"_source": {"bookId": "2000014486","title": "黄家驹(1962年6月10日—1993年6月30日),出生于中国香港,祖籍广东省台山市","alltext": "中国香港男歌手、原创音乐人、吉他手,摇滚乐队Beyond的主唱及创队成员。1983年组建Beyond乐队,担任主唱,"}}]}
}

查询语句

{"query":{"bool":{"should":[// must相当于mysql的and,should相当于or{"match":{"title" :{//title是字段"query":"出生于相关",//全文查询内容"minimum_should_match":"60%"//是指最少匹配百分比。是指将 query 分词后的词的数量 A,要求///匹配中的词的数量b,b/a 即为正数的百分比。// "minimum_should_match":"3"//是指将 query 分词后的词的数量 A,要求从 A 中最少匹配中的///词的数量 B。这里匹配中的词是:出,生,于。}//"gender":26}}]}}
}
查询结果{"took": 3,"timed_out": false,"_shards": {"total": 1,"successful": 1,"skipped": 0,"failed": 0},"hits": {"total": {"value": 3,"relation": "eq"},"max_score": 1.5160279,"hits": [{"_index": "book","_type": "_doc","_id": "Ss2g7IIBO-2eYCM1NBeJ","_score": 1.5160279,"_source": {"bookId": "2000014486","title": "黄家驹(1962年6月10日—1993年6月30日),出生于中国香港,祖籍广东省台山市","alltext": "中国香港男歌手、原创音乐人、吉他手,摇滚乐队Beyond的主唱及创队成员。1983年组建Beyond乐队,担任主唱,"}},{"_index": "book","_type": "_doc","_id": "SM2e7IIBO-2eYCM19Rdj","_score": 1.3371259,"_source": {"bookId": "2000014486","title": "李小龙(英文名:Bruce Lee,1940年11月27日-1973年7月20日),本名李振藩,出生于美国加利福尼亚州旧金山","alltext": "1962年李小龙开办“振藩国术馆”,1967年自创截拳道,1973年7月20日,李小龙在香港逝世,年仅32岁。1979年美国洛杉矶市政府将补拍版《死亡游戏》的开映日6月8日定为“李小龙日”(7月8日为错误翻译)。1993年美国发行李小龙逝世20周年纪念钞票,好莱坞星光大道铺上李小龙纪念星徽;同年,获香港电影金像奖大会颁发“终身成就奖”。1998年11月,获中国武术协会颁发“武术电影巨星奖”。"}},{"_index": "book","_type": "_doc","_id": "Sc2f7IIBO-2eYCM1bxfY","_score": 1.3117697,"_source": {"bookId": "2000014486","title": "周星驰(Stephen Chow),1962年6月22日出生于香港,祖籍浙江省宁波市,中国香港影视男演员、导演、编剧、制作人、商人,毕业于无线电视艺员训练班","alltext": "1980年成为丽的电视台的特约演员,从而进入演艺圈。1981年出演个人首部电视剧《IQ成熟时》。1988年将演艺事业的重心转向大银幕,并于同年出演电影处女作《捕风汉子》。1990年凭借喜剧片《一本漫画闯天涯》确立其无厘头的表演风格;同年,因其主演的喜剧动作片《赌圣》打破香港地区票房纪录而获得关注。1991年主演喜剧片《逃学威龙》,并再次打破香港地区票房纪录 [1]  。1995年凭借喜剧爱情片《大话西游》奠定其在华语影坛的地位。1999年自导自演的喜剧片《喜剧之王》获得香港电影年度票房冠军 [2]  。"}}]}
}

goland里面api的接口演示

boost控制权重

boost控制权重实现搜索结果排名
参考

ES(elasticSearch学习笔记)相关推荐

  1. ElasticSearch学习笔记(8)· ES集群的搭建

    目录 十三.集群的实现 1.相关概念 集群(cluster) 节点(node) 分配和复制(shards & replicas) 2.快速搭建集群 3.安装head插件 十三.集群的实现 1. ...

  2. elasticSearch学习笔记04-同义词,停用词,拼音,高亮,拼写纠错

    由于elasticSearch版本更新频繁,此笔记适用ES版本为 7.10.2 此笔记摘录自<Elasticsearch搜索引擎构建入门与实战>第一版 文中涉及代码适用于kibana开发工 ...

  3. ElasticSearch 学习笔记:Multi Search

    本文目录 1 简介 2 格式 3 header格式 4 body格式 5 返回格式 6 性能 7 相关文章 1 简介 批量查询接口(Multi Search API)允许在一次请求中执行多个查询操作, ...

  4. ElasticSearch学习笔记之十一 Anayle API和IK分词器

    ElasticSearch学习笔记之十一 Anayle API和IK分词器 Anayle API IK分词器 IK分词器版本支持 安装 下载或者编译 选择一 选择二 重启ElasticSearch I ...

  5. 黑马程序员--分布式搜索ElasticSearch学习笔记

    写在最前 黑马视频地址:https://www.bilibili.com/video/BV1LQ4y127n4/ 想获得最佳的阅读体验,请移步至我的个人博客 SpringCloud学习笔记 消息队列M ...

  6. ElasticSearch学习笔记-ngram、中文拼音、简繁体搜索记录

    ElasticSearch版本:elasticsearch-7.3.0 ElasticSearch相关插件安装可以参考: ElasticSearch学习笔记-插件安装记录_人生偌只如初见的博客-CSD ...

  7. ElasticSearch学习笔记之二十一 指标聚合

    ElasticSearch学习笔记之二十一 指标聚合 指标聚合 Avg Aggregation Script Value Script Missing value Weighted Avg Aggre ...

  8. ElasticSearch 学习笔记

    ElasticSearch (狂神说学习笔记) 1.ES 概述 es是一个开源的高扩展的分布式全文检索引擎, 2.环境安装 环境准备:jdk,你得先安装一个jdk. ES官网: https://www ...

  9. 2022-04-21 ElasticSearch 学习笔记

    Elasticsearch 通用能力 查看文档数量 GET http://192.168.1.243:9200/_count{"query": {"match_all&q ...

  10. ElasticSearch学习笔记(一)

    ElasticSearch学习 环境准备 JDK 1.8 Node.js 相关文件 (Windows 练习的话,使用 6.2.2 版本较为稳定, 否则 Kibana 可能会遇到一些启动报错问题) 资源 ...

最新文章

  1. xadmin2 django 搭建学生系统 model层
  2. CentOS-7.2、7.5模板机制作
  3. PADS 创建封装笔记
  4. mysql delete exists用法_自学MySQL第五天
  5. 初步认识Volatile-MESI优化带来的可见性问题
  6. mysql 无法处理非法数据_MySQL 处理非法数据
  7. 《转》完美解决微信video视频隐藏控件和内联播放问题
  8. VDO-SLAM论文阅读
  9. [RMAN]控制文件的恢复
  10. Educational Codeforces Round 54 (Rated for Div. 2): E. Vasya and a Tree(DFS+差分)
  11. 拓端tecdat|Excel中计算票面利率Coupon Rate
  12. .NET Remoting 分布式开发实例思想(转)
  13. 190520每日一句
  14. Ubuntu 10.04 开机默认进入命令行模式
  15. VB.NET连接SQL数据库
  16. 代码整洁之道Clean Code笔记
  17. 青空格斗SolanoBattle源代码分享(我的2020大一游戏作)
  18. FOC矢量控制及BLDC控制中的端电压、相电压、线电压等概念别还傻傻分不清楚
  19. cocos2d-x 植入广告(一) 百度横屏、插屏广告
  20. 【故障诊断分析】基于matlab小波变换外圈轴承故障诊断【含Matlab源码 1678期】

热门文章

  1. 一些python学习中的练习与讲解
  2. 调整图像大小调整图片大小
  3. 合肥工业大学计算机与信息学院研究生,合肥工业大学计算机与信息学院硕士生导师介绍:唐益明...
  4. 中微区块链集团参加“区块链技术与应用”科学与技术前沿论坛
  5. 说说短线,交易模型与交易系统
  6. 服务器安全性的运行与维护 理论(一)
  7. 【多目标跟踪】Tracktor++代码及调试过程
  8. java将oracle导出表sql文件中的insert批量更改为update
  9. CRC校验实现原理以及程序实现研究
  10. PHP微服务框架Tars