当前位置: 首页 > 后端技术 > Java

Elasticserach学习记录(一)

时间:2023-04-01 15:46:51 Java

请注意,所有这些东西的版本必须相同。ElasticSearch安装jdk至少1.8ElasticSearch客户端、接口工具注意jdk必须和CPU位数相同,否则会报JNA错误。下载地址https://www.elastic.co/cn/搜索和kibabnhttps://github.com/medcl/elas...ik分词器https://github.com/mobz/elast...头塞-indownload这些都是解压出来的Elasticearch开始点击bin\下的elasticsearch。bat如果电脑内存不够大,记得去config\jvm.options修改-Xms256m-Xmx256m访问http://127.0.0.1:9200/head插件必须有nodejs因为是用前端。cnpminstall安装依赖cnpmrunstart注意9100端口是否被占用findstr"9100"然后去任务管理器的详细信息里关闭启动成功访问http://localhost:9100/9200并且9100是跨域的,需要在elasticearch.yaml中配置http域。cors.enabled:truehttp.cors.allow-origin:"*"然后重启es服务head相当于navicatkibana,也是标准的前端项目bin\kibana.bathttp://localhost:5601找到中文版的开发工具!!!!更改kibana.yamli18n.locale的配置:"zh-CN"IK分词器(中文)elasticsreach默认不是中文。elasticsreach的插件中有两种算法ik_smart。默认的分词器可以理解非重复的单词或者单词ik_max_word最细粒度的词条可能是GET_analyze{"analyzer":"ik_smart","text":"我真的很喜欢你有多帅"}GET_analyze{“分析仪”:“ik_max_word”,“text":"IlikehowhumantyIam"}需要的词需要自己加入字典IKAnalyzer.cfg.xml自己写kb.dic,在配置中加入kbfile.dic重启esReststyle1.创建索引,在请求体中插入数据PUT/indexname/typename(optional)/documentid{jsonrequestbody}add创建索引,指定字段类型但是没有插入信息PUT/test2{"mappings":{"properties":{"name":{"type":"text"},"age":{"type":"long"},"birthday":{"type":"date"}}}}获取信息GETtest2不写的话默认type_doc关键字离不开PUT/test3/_doc/1{"name":"Howhandsome","age":18、"birthday":"1999-10-20"}GET_cat/healthdatabasestatusGET_cat/indices?v数据库信息修改1、直接暴力PUTPUT/test3/_doc/1{"name":"多帅123","age":18,"birthday":"1999-10-20"}但是索引信息会改变版本和状态2.POSTPOST/test3/_doc/1/_update{"doc":{"name":"shuaikb"}}3.删除索引DELETEtest1查询GET/test3/_search?q=name:多帅/"_score":0.5753642,这个_score是匹配度matching度数越高得分越高越多complexsearchGET/test3/_search{"query":{"match":{"name":"多帅"}}}name包含多帅就会出来"hits"包含索引信息及查询结果GET/test3/_search{"query":{"match":{"name":"多帅"}},"_source":["name","age"]}查询数据仅显示java中的姓名和年龄,然后在java中操作es。这里所有的方法都是key排序"sort":[{"age":{"order":"desc"}}]按哪个字段排序descdescendingascAscendingpagination"from":0,哪个数据开始"size":1返回多少个boolean值"match":{"age":18}}]}}}精确匹配多条件查询必须等价并且应该等价或不等价!=GET/test3/_search{"query":{"bool":{"must":[{"match":{"name":"多帅"}}],"filter":[{"range":{"age":{"gte":10,"lte":17}}}]}}}filter可以进行数据过滤gt>gte>=lt是高亮的html自定义搜索高亮条件GETtestdb/_search{"query":{"match":{"name":"handsome"}},"highlight":{"pre_tags":"","post_tags":"

","fields":{"name":{}}}}Spirngboot集成es原生依赖我们导入的实际依赖org.springframework.bootspring-boot-starter-data-elasticsearch注意依赖版本必须和自己本地的es版本一致,所以需要自定义版本依赖初始化RestHighLevelClientclient=newRestHighLevelClient(RestClient.builder(newHttpHost("localhost",9200,"http"),新的HttpHost(“本地主机”,9201,“http”)));记得关闭client.close();@BeanpublicRestHighLevelClientrestHighLevelClient(){RestHighLevelClient客户端=newRestHighLevelClient(RestClient.builder(newHttpHost("localhost",9200,"http"),newHttpHost("localhost",9201,"http")));回头客;}API索引操作@TestpublicvoidCreateIndex()throwsIOException{//创建索引CreateIndexRequestrequest=newCreateIndexRequest("shuaikb_index");//执行请求得到响应CreateIndexResponsecreateIndexResponse=client.indices().create(requst,RequestOptions.DEFAULT);System.out.println(createIndexResponse);}@TestvoidtestExisIndex()throwsIOException{//判断GetIndexRequest存在request=newGetIndexRequest("shuaikb_index");布尔值存在=client.indices().exists(request,RequestOptions.DEFAULT);System.out.println(存在);}@TestvoidtestDeleteIndex()throwsIOException{//删除索引DeleteIndexRequestrequest=newDeleteIndexRequest("shuaikb_index");AcknowledgedResponsedelete=client.indices().delete(request,RequestOptions.DEFAULT);System.out.println(delete);}文件操作@TestvoidtestAddDocument()throwsIOException{//添加文件Dogdog=newDog();dog.setName("多帅啊");dog.setAge(12);IndexRequestrequst=newIndexRequest("shuaikb_index");//规则PUT/shuaikb_index/_doc/1requst.id("1");requst.timeout(TimeValue.timeValueSeconds(1));requst.timeout("1s");//将我们的数据放入请求jsonrequst.source(JSON.toJSONString(dog),XContentType.JSON);//客户端发送请求IndexResponseindexResponse=client.index(requst,RequestOptions.DEFAULT);System.out.println(indexResponse.toString());System.out.println(indexResponse.status());}@TestvoidtestExisDocument()throwsIOException{//判断文件存在GetRequestgetRequest=newGetRequest("shuaikb_index","1");//不获取返回的_source上文getRequest.fetchSourceContext(newFetchSourceContext(false));getRequest.storedFields("_noe_");布尔值存在=client.exists(getRequest,RequestOptions.DEFAULT);System.out.println(存在);}@TestvoidtestGetDocument()throwsIOException{//获取文档信息GetRequestgetRequest=newGetRequest("shuaikb_index","1");GetResponsedocumentFields=client.get(getRequest,RequestOptions.DEFAULT);System.out.println(documentFields.getSourceAsString());System.out.println(文档字段);}@TestvoidtestUpdateDocument()throwsIOException{//更新文档信息UpdateRequestupdateRequest=newUpdateRequest("shuaikb_index","1");updateRequest.timeout("1s");Dogdog=newDog("你怎么说",20);updateRequest.doc(JSON.toJSONString(dog),XContentType.JSON);client.update(updateRequest,RequestOptions.DEFAULT);}@TestvoidtestDeleteDocument()throwsIOException{//删除文档信息DeleteRequestdeleteRequest=newDeleteRequest("shuaikb_index","1");deleteRequest.timeout("1s");DeleteResponsedelete=client.delete(deleteRequest,RequestOptions.DEFAULT);System.out.println(删除);}大量数据操作//大量数据操作@TestvoidtestBulkRequest()throwsIOException{BulkRequestbulkRequest=newBulkRequest();bulkRequest.timeout("10s");ArrayListdogArrayList=newArrayList();dogArrayList.add(newDog("test1",1));dogArrayList.add(newDog("test2",1));dogArrayList.add(newDog("test3",1));dogArrayList.add(newDog("test4",1));dogArrayList.add(newDog("shuaikb1",1));dogArrayList.add(newDog("shuaikb2",1));dogArrayList.add(newDog("shuaikb3",1));dogArrayList.add(newDog("shuaikb4",1));对于(inti=0;i