Elasticsearch 7.17.6 windows环境下学习

2023-10-11 22:30

本文主要是介绍Elasticsearch 7.17.6 windows环境下学习,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

下载地址

Elasticsearch 7.17.6
Kibana 7.17.6

ES 配置

配置ES的JDK11,指向解压包
ES_JAVA_HOME
在这里插入图片描述

修改ES启动的运存

修改config目录里的 jvm.options 文件
防止开发时候电脑太卡

-Xms128m
-Xmx512m

在这里插入图片描述

启动kibana

bin 目录下的 kibana.bat ,启动时间比较久

查看node版本
在这里插入图片描述

设置为中文

config目录下单 kibana.yml
最后一行加上,然后重启服务

i18n.locale: "zh-CN"

安装 IK 分词

下载地址
解压到目录里 elasticsearch-7.17.6\plugins\ik
安装好后重启ES服务

配置自己的词典

1.进入 elasticsearch-7.17.6\plugins\ik\config 目录,随便复制一个dic后缀的文件,修改名字为 mydic.dic。

2.编辑 mydic.dic 文件。
在这里插入图片描述
3.重启ES服务
4.智能分词里就有自己添加的词
在这里插入图片描述

去掉需要密码的提示

目录 elasticsearch-7.17.6\config\elasticsearch.yml 最后一行加上:
xpack.security.enabled: false

加上日志输出请求

application.yml末尾加上

logging:level:tracer: TRACE

kibana 控制台

使用文档

# 查看健康状态
GET /_cat/health?v
# 查看节点
GET /_cat/nodes?v
# 查看索引
GET /_cat/indices?v# 新建索引
PUT /my_test
# 删除索引
DELETE /my_test# ik 分词测试
GET /_analyze?pretty
{
"analyzer" : "ik_max_word",
"text": "中华人民共和国国歌"
}
ES直接操作学习

融入JAVA 项目

官方文档

es和springboot版本对比

  1. 测试类test目录下的JAVA包名和项目src的一样
  2. 查询 cluster_name,http://127.0.0.1:9200/_cluster/health?pretty
  3. 代码实例
  4. 语法教程

JAVA代码样例

public class ElasticsearchRepositoryTest extends BaseTest {@Autowiredprivate GoodsMapper goodsMapper;@Autowiredprivate GoodsRepository goodsEsRepository;@Autowiredprivate ElasticsearchRestTemplate elasticsearchRestTemplate;/*** 导入测试数据,从mysql中导入测试数据至es*/@Testpublic void importAllData() {// 查询所有数据List<Goods> lists = goodsMapper.findAll();// 保存所有数据只ES中goodsEsRepository.saveAll(lists);System.out.println("ok");}/*** 添加文档*/@Testpublic void save() {
//        PUT /goods/_doc/1?timeout=1m
//        {"_class":"com.sky.demo.domain.Goods","id":1,"title":"Apple iPhone 13 ProMax 5G全网通手机","price":8999.0,"stock":100,"saleNum":1,"categoryName":"手机","brandName":"Apple","status":0,"createTime":"2022-09-23 07:53:43"}Goods goods = new Goods(1L, "Apple iPhone 13 ProMax 5G全网通手机", new BigDecimal(8999), 100, 1, "手机", "Apple", 0, new Date());goodsEsRepository.save(goods);}/*** 批量添加数据*/@Testpublic void saveAll() {List<Goods> goodsList = new ArrayList<>();goodsList.add(new Goods(2L, "title2", new BigDecimal(12), 1, 1, "category2", "brandName2", 0, new Date()));goodsList.add(new Goods(3L, "title3", new BigDecimal(12), 1, 1, "category3", "brandName3", 0, new Date()));goodsList.add(new Goods(4L, "title4", new BigDecimal(12), 1, 1, "category4", "brandName4", 0, new Date()));goodsEsRepository.saveAll(goodsList);}/*** 根据编号查询*/@Testpublic void findById() {
//        GET '/goods/_doc/536563'Optional<Goods> optional = goodsEsRepository.findById(536563L);System.out.println(optional.orElse(null));}/*** 查询所有**/@Testpublic void findAll() {
//        GET /goods/_search?typed_keys=true&max_concurrent_shard_requests=5&search_type=query_then_fetch&batched_reduce_size=512Iterable<Goods> list = goodsEsRepository.findAll();for (Goods item : list) {System.out.println(item);}}/*** 分页查询*/@Testpublic void findAllByPage() {// 数据太多了分页查询
//        GET /goods/_search?typed_keys=true&max_concurrent_shard_requests=5&search_type=query_then_fetch&batched_reduce_size=512
//        {
//            "from":0,"size":10
//        }PageRequest pageRequest = PageRequest.of(0, 10);Iterable<Goods> list = goodsEsRepository.findAll(pageRequest);for (Goods item : list) {System.out.println(item);}}/*** 排序查询*/@Testpublic void findAllBySort() {
//        GET /goods/_search?typed_keys=true&max_concurrent_shard_requests=5&search_type=query_then_fetch&batched_reduce_size=512
//        {
//            "from":0,"size":10
//                ,"sort":[{"price":{"order":"desc","mode":"min"}}]
//        }Iterable<Goods> list = goodsEsRepository.findAll(Sort.by(Sort.Direction.DESC, "price"));for (Goods item : list) {System.out.println(item);}}/*** 根据ID批量查询*/@Testpublic void findAllById() {
//        GET /_mget
//        {
//            "docs": [{
//            "_index": "goods",
//                    "_id": "536563"
//        }, {
//            "_index": "goods",
//                    "_id": "562379"
//        }, {
//            "_index": "goods",
//                    "_id": "605616"
//        }, {
//            "_index": "goods",
//                    "_id": "635906"
//        }]
//        }List<Long> asList = Arrays.asList(536563L, 562379L, 605616L, 635906L);Iterable<Goods> list = goodsEsRepository.findAllById(asList);for (Goods item : list) {System.out.println(item);}}/*** 统计数量*/@Testpublic void count() {
//        GET /goods/_search?typed_keys=true&max_concurrent_shard_requests=5&search_type=query_then_fetch&batched_reduce_size=512
//        {"from":0,"size":0}System.out.println(goodsEsRepository.count());}/*** 根据编号判断文档是否存在*/@Testpublic void existsById() {
//         GET /goods/_doc/536563?_source=falseSystem.out.println(goodsEsRepository.existsById(536563L));}/*** 删除文档*/@Testpublic void delete() {
//        DELETE /goods/_doc/1?timeout=1mgoodsEsRepository.findById(1L).ifPresent(goods -> goodsEsRepository.delete(goods));}/*** 删除所有文档*/@Testpublic void deleteAll() {goodsEsRepository.deleteAll();}/*** 根据编号批量删除文档*/@Testpublic void deleteAllByIds() {goodsEsRepository.deleteAll(goodsEsRepository.findAllById(Arrays.asList(1L, 2L, 3L)));}/*** 根据编号删除文档*/@Testpublic void deleteById() {
//        DELETE 'http://127.0.0.1:9200/goods/_doc/4?timeout=1m'goodsEsRepository.deleteById(4L);}
/*自定义方法:Spring Data 的另一个强大功能,是根据方法名称自动实现功能。比如:你的方法名叫做:findByTitle,那么它就知道你是根据title查询,然后自动帮你完成,无需写实现类。当然,方法名称要符合一定的约定:
https://www.cnblogs.com/tanghaorong/p/16365684.html/*** 自定义方法:根据标题查询*/@Testpublic void findByTitle() {
//        GET /goods/_search?typed_keys=true&max_concurrent_shard_requests=5&search_type=query_then_fetch&batched_reduce_size=512
//        {
//            "query": {
//            "bool": {
//                "must": [{
//                    "query_string": {
//                        "query": "华为",
//                                "fields": ["title^1.0"]
//                    }
//                }]
//            }
//        }
//        }goodsEsRepository.findByTitle("华为").forEach(System.out::println);}/*** 自定义方法:根据价格区间查询*/@Testpublic void findByPriceBetween() {
//        GET /goods/_search?typed_keys=true&max_concurrent_shard_requests=5&search_type=query_then_fetch&batched_reduce_size=512
//        {
//            "query": {
//            "bool": {
//                "must": [{
//                    "range": {
//                        "price": {
//                            "from": 3000,
//                                    "to": 5000,
//                                    "include_lower": true,
//                                    "include_upper": true,
//                                    "boost": 1.0
//                        }
//                    }
//                }]
//            }
//        }
//        }goodsEsRepository.findByPriceBetween(new BigDecimal("3000"), new BigDecimal("5000")).forEach(System.out::println);}/*** 精确查询(termQuery)*/@Testpublic void termQuery() {
//        GET /goods/_search?typed_keys=true&max_concurrent_shard_requests=5&search_type=query_then_fetch&batched_reduce_size=512
//        {"from":0,"size":10,"query":{"term":{"categoryName":{"value":"手机","boost":1.0}}},"version":true,"explain":false}//查询条件(词条查询:对应ES query里的term)TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("categoryName", "手机");//创建查询条件构建器SearchSourceBuilder(对应ES外面的大括号)NativeSearchQuery nativeSearchQuery = new NativeSearchQueryBuilder().withQuery(termQueryBuilder).build();//查询,获取查询结果SearchHits<Goods> searchHits = elasticsearchRestTemplate.search(nativeSearchQuery, Goods.class);//获取总记录数long totalHits = searchHits.getTotalHits();System.out.println("totalHits = " + totalHits);//获取值返回searchHits.getSearchHits().stream().map(SearchHit<Goods>::getContent).forEach(System.out::println);}/*** terms:多个查询内容在一个字段中进行查询*/@Testpublic void termsQuery() {
//        GET /goods/_search?typed_keys=true&max_concurrent_shard_requests=5&search_type=query_then_fetch&batched_reduce_size=512
//        {"from":0,"size":10,"query":{"terms":{"categoryName":["手机","平板电视"],"boost":1.0}},"version":true,"explain":false}//查询条件(词条查询:对应ES query里的terms)TermsQueryBuilder termsQueryBuilder = QueryBuilders.termsQuery("categoryName", "手机", "平板电视");//创建查询条件构建器SearchSourceBuilder(对应ES外面的大括号)NativeSearchQuery nativeSearchQuery = new NativeSearchQueryBuilder().withQuery(termsQueryBuilder).build();//查询,获取查询结果SearchHits<Goods> searchHits = elasticsearchRestTemplate.search(nativeSearchQuery, Goods.class);//获取总记录数long totalHits = searchHits.getTotalHits();System.out.println("totalHits = " + totalHits);//获取值返回searchHits.getSearchHits().stream().map(SearchHit::getContent).forEach(System.out::println);}@Testpublic void matchQuery() {
//        GET /goods/_search?typed_keys=true&max_concurrent_shard_requests=5&search_type=query_then_fetch&batched_reduce_size=512
//        {
//            "from": 0,
//                "size": 10,
//                "query": {
//            "match": {
//                "title": {
//                    "query": "Apple IPhone 白色",
//                            "operator": "AND",
//                            "analyzer": "ik_smart",
//                            "prefix_length": 0,
//                            "max_expansions": 50,
//                            "fuzzy_transpositions": true,
//                            "lenient": false,
//                            "zero_terms_query": "NONE",
//                            "auto_generate_synonyms_phrase_query": true,
//                            "boost": 1
//                }
//            }
//        },
//            "version": true,
//                "explain": false
//        }
////查询条件(词条查询:对应ES query里的match)MatchQueryBuilder matchQueryBuilder = QueryBuilders.matchQuery("title", "Apple IPhone 白色").analyzer("ik_smart").operator(Operator.AND);//创建查询条件构建器SearchSourceBuilder(对应ES外面的大括号)NativeSearchQuery nativeSearchQuery = new NativeSearchQueryBuilder().withQuery(matchQueryBuilder).build();//查询,获取查询结果SearchHits<Goods> search = elasticsearchRestTemplate.search(nativeSearchQuery, Goods.class);//获取总记录数long totalHits = search.getTotalHits();System.out.println("totalHits = " + totalHits);//获取值返回search.getSearchHits().stream().map(SearchHit::getContent).forEach(System.out::println);}/*** match_all:查询全部。* 默认查询10条*/@Testpublic void matchAllQuery() {
//        GET /goods/_search?typed_keys=true&max_concurrent_shard_requests=5&search_type=query_then_fetch&batched_reduce_size=512
//        {
//            "from": 0,
//                "size": 10,
//                "query": {
//            "match_all": {
//                "boost": 1
//            }
//        },
//            "version": true,
//                "explain": false
//        }//查询条件(词条查询:对应ES query里的match)MatchAllQueryBuilder matchAllQueryBuilder = QueryBuilders.matchAllQuery();//创建查询条件构建器SearchSourceBuilder(对应ES外面的大括号)NativeSearchQuery nativeSearchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQueryBuilder).build();//查询,获取查询结果SearchHits<Goods> search = elasticsearchRestTemplate.search(nativeSearchQuery, Goods.class);//获取总记录数long totalHits = search.getTotalHits();System.out.println("totalHits = " + totalHits);//获取值返回search.getSearchHits().stream().map(SearchHit::getContent).forEach(System.out::println);}/*** match_phrase:短语查询,在match的基础上进一步查询词组,可以指定slop分词间隔。* 默认查询10条*/@Testpublic void matchPhraseQuery() {
//        GET /goods/_search?typed_keys=true&max_concurrent_shard_requests=5&search_type=query_then_fetch&batched_reduce_size=512
//        {
//            "from": 0,
//                "size": 10,
//                "query": {
//            "match_phrase": {
//                "title": {
//                    "query": "华为",
//                            "slop": 0,
//                            "zero_terms_query": "NONE",
//                            "boost": 1
//                }
//            }
//        },
//            "version": true,
//                "explain": false
//        }//查询条件(词条查询:对应ES query里的match_all)MatchPhraseQueryBuilder matchPhraseQueryBuilder = QueryBuilders.matchPhraseQuery("title", "华为");//创建查询条件构建器SearchSourceBuilder(对应ES外面的大括号)NativeSearchQuery nativeSearchQuery = new NativeSearchQueryBuilder().withQuery(matchPhraseQueryBuilder).build();//查询,获取查询结果SearchHits<Goods> search = elasticsearchRestTemplate.search(nativeSearchQuery, Goods.class);//获取总记录数long totalHits = search.getTotalHits();System.out.println("totalHits = " + totalHits);//获取值返回search.getSearchHits().stream().map(SearchHit::getContent).forEach(System.out::println);}/*** multi_match:多字段查询,使用相当的灵活,可以完成match_phrase和match_phrase_prefix的工作。*/@Testpublic void multiMatchQuery() {
//        GET /goods/_search?typed_keys=true&max_concurrent_shard_requests=5&search_type=query_then_fetch&batched_reduce_size=512
//        {
//            "from": 0,
//                "size": 10,
//                "query": {
//            "multi_match": {
//                "query": "华为和Apple",
//                        "fields": [
//                "categoryName^1.0",
//                        "title^1.0"
//      ],
//                "type": "best_fields",
//                        "operator": "OR",
//                        "analyzer": "ik_smart",
//                        "slop": 0,
//                        "prefix_length": 0,
//                        "max_expansions": 50,
//                        "zero_terms_query": "NONE",
//                        "auto_generate_synonyms_phrase_query": true,
//                        "fuzzy_transpositions": true,
//                        "boost": 1
//            }
//        },
//            "version": true,
//                "explain": false
//        }//查询条件(词条查询:对应ES query里的multi_match)MultiMatchQueryBuilder multiMatchQueryBuilder = QueryBuilders.multiMatchQuery("华为和Apple", "title", "categoryName").analyzer("ik_smart");//创建查询条件构建器SearchSourceBuilder(对应ES外面的大括号)NativeSearchQuery nativeSearchQuery = new NativeSearchQueryBuilder().withQuery(multiMatchQueryBuilder).build();//查询,获取查询结果SearchHits<Goods> search = elasticsearchRestTemplate.search(nativeSearchQuery, Goods.class);//获取总记录数long totalHits = search.getTotalHits();System.out.println("totalHits = " + totalHits);//获取值返回search.getSearchHits().stream().map(SearchHit::getContent).forEach(System.out::println);}/*** 通配符查询* <p>* *:表示多个字符(0个或多个字符)* ?:表示单个字符*/@Testpublic void wildcardQuery() {
//        GET /goods/_search?typed_keys=true&max_concurrent_shard_requests=5&search_type=query_then_fetch&batched_reduce_size=512
//        {
//            "from": 0,
//                "size": 10,
//                "query": {
//            "wildcard": {
//                "title": {
//                    "wildcard": "华为*",
//                            "boost": 1
//                }
//            }
//        },
//            "version": true,
//                "explain": false
//        }//查询条件WildcardQueryBuilder wildcardQueryBuilder = QueryBuilders.wildcardQuery( "title","华为*");//创建查询条件构建器SearchSourceBuilder(对应ES外面的大括号)NativeSearchQuery nativeSearchQuery = new NativeSearchQueryBuilder().withQuery(wildcardQueryBuilder).build();//查询,获取查询结果SearchHits<Goods> search = elasticsearchRestTemplate.search(nativeSearchQuery, Goods.class);//获取总记录数long totalHits = search.getTotalHits();System.out.println("totalHits = " + totalHits);//获取值返回search.getSearchHits().stream().map(SearchHit::getContent).forEach(System.out::println);}/*** 排序查询(sort)* 匹配查询符合条件的所有数据,并设置分页*/@Testpublic void sort() {//查询条件(词条查询:对应ES query里的match)
//        GET /goods/_search?typed_keys=true&max_concurrent_shard_requests=5&search_type=query_then_fetch&batched_reduce_size=512
//        {
//            "from": 0,
//                "size": 10,
//                "query": {
//            "match_all": {
//                "boost": 1
//            }
//        },
//            "version": true,
//                "explain": false,
//                "sort": [
//            {
//                "price": {
//                "order": "desc"
//            }
//            }
//  ]
//        }MatchAllQueryBuilder matchAllQueryBuilder = QueryBuilders.matchAllQuery();FieldSortBuilder fieldSortBuilder = SortBuilders.fieldSort("price").order(SortOrder.DESC);//创建查询条件构建器SearchSourceBuilder(对应ES外面的大括号)NativeSearchQuery nativeSearchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQueryBuilder).withSorts(fieldSortBuilder).build();//查询,获取查询结果SearchHits<Goods> search = elasticsearchRestTemplate.search(nativeSearchQuery, Goods.class);//获取总记录数System.out.println("totalHits = " + search.getTotalHits());//获取值返回search.getSearchHits().stream().map(SearchHit::getContent).forEach(System.out::println);}/*** 分页查询(page)*/@Testpublic void pageQuery() {
//        GET /goods/_search?typed_keys=true&max_concurrent_shard_requests=5&search_type=query_then_fetch&batched_reduce_size=512
//        {
//            "from": 0,
//                "size": 5,
//                "query": {
//            "match_all": {
//                "boost": 1
//            }
//        },
//            "version": true,
//                "explain": false,
//                "sort": [
//            {
//                "price": {
//                "order": "desc"
//            }
//            }
//  ]
//        }//查询条件MatchAllQueryBuilder matchAllQueryBuilder = QueryBuilders.matchAllQuery();FieldSortBuilder fieldSortBuilder = SortBuilders.fieldSort("price").order(SortOrder.DESC);// 分页数据PageRequest pageRequest = PageRequest.of(0, 5);//创建查询条件构建器SearchSourceBuilder(对应ES外面的大括号)NativeSearchQuery nativeSearchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQueryBuilder).withSorts(fieldSortBuilder).withPageable(pageRequest).build();//查询,获取查询结果SearchHits<Goods> search = elasticsearchRestTemplate.search(nativeSearchQuery, Goods.class);//获取总记录数,当前页,每页大小System.out.println("totalHits = " + search.getTotalHits());System.out.println("pageNumber = " + pageRequest.getPageNumber());System.out.println("pageSize = " + pageRequest.getPageSize());//获取值返回search.getSearchHits().stream().map(SearchHit::getContent).forEach(System.out::println);}/*** 滚动查询所有数据*/@Testpublic void scrollQuery1() {// 设置每页数据量int pageSize = 10;MatchAllQueryBuilder queryBuilder = QueryBuilders.matchAllQuery();//条件FieldSortBuilder sortBuilder = new FieldSortBuilder("id").order(SortOrder.ASC);//排序NativeSearchQuery nativeSearchQuery = new NativeSearchQueryBuilder().withQuery(queryBuilder).withSorts(sortBuilder).build();nativeSearchQuery.setMaxResults(pageSize);// 设置每页数据量long scrollTimeInMillis = 60 * 1000;//设置缓存内数据的保留时间,不要把缓存时时间设置太长,否则占用内存。// 缓存第一页符合搜索条件的数据SearchScrollHits<Goods> searchScrollHits = elasticsearchRestTemplate.searchScrollStart(scrollTimeInMillis, nativeSearchQuery, Goods.class, IndexCoordinates.of("goods"));String scrollId = searchScrollHits.getScrollId();int scrollTime = 1;while (searchScrollHits.hasSearchHits()) {// 判断searchScrollHits中是否有命中数据,如果为空,则表示已将符合查询条件的数据全部遍历完毕System.out.println("第" + scrollTime + "页数据,数据总数:" + searchScrollHits.getSearchHits().size());for (SearchHit<Goods> searchHit : searchScrollHits.getSearchHits()) {// 从缓存中读取数据Goods goods = searchHit.getContent();System.out.println(goods);}// 根据上次搜索结果scroll_id进入下一页数据搜索searchScrollHits = elasticsearchRestTemplate.searchScrollContinue(scrollId, scrollTimeInMillis, Goods.class, IndexCoordinates.of("goods"));//该方法执行后将重新刷新快照保留时间scrollId = searchScrollHits.getScrollId();scrollTime = scrollTime + 1;}List<String> scrollIds = new ArrayList<>();scrollIds.add(scrollId);//        DELETE 'http://127.0.0.1:9200/_search/scroll' -d '{"scroll_id":["FGluY2x1ZGVfY29udGV4dF91dWlkDXF1ZXJ5QW5kRmV0Y2gBFnZndHRsM0lsU3VPQ0dLQnVwY0V4UlEAAAAAAAAJXhZ4MTI3QUpXYVEtbWtjVU1WQ0d6S1Vn"]}'elasticsearchRestTemplate.searchScrollClear(scrollIds);// 清除 scroll}/*** 根据查询条件滚动查询* 可以用来解决深度分页查询问题*/@Testpublic void scrollQuery2() {// 假设用户想获取第70页数据,其中每页10条int pageNo = 70;int pageSize = 10;// 构建查询条件MatchAllQueryBuilder queryBuilder = QueryBuilders.matchAllQuery();FieldSortBuilder sortBuilder = new FieldSortBuilder("id").order(SortOrder.ASC);//排序NativeSearchQuery nativeSearchQuery = new NativeSearchQueryBuilder().withQuery(queryBuilder).withSorts(sortBuilder).build();nativeSearchQuery.setMaxResults(pageSize);// 设置每页数据量long scrollTimeInMillis = 60 * 1000;//设置缓存内数据的保留时间//1、缓存第一页符合搜索条件的数据
//        GET /goods/_search?scroll=60000ms&typed_keys=true&max_concurrent_shard_requests=5&search_type=query_then_fetch&batched_reduce_size=512
//        {
//            "from": 0,
//                "size": 10,
//                "query": {
//            "match_all": {
//                "boost": 1
//            }
//        },
//            "version": true,
//                "explain": false,
//                "sort": [
//            {
//                "id": {
//                "order": "asc"
//            }
//            }
//  ]
//        }SearchScrollHits<Goods> searchScrollHits = elasticsearchRestTemplate.searchScrollStart(scrollTimeInMillis, nativeSearchQuery, Goods.class, IndexCoordinates.of("goods"));String scrollId = searchScrollHits.getScrollId();int scrollTime = 1;// 判断searchScrollHits中是否有命中数据,如果为空,则表示已将符合查询条件的数据全部遍历完毕while (searchScrollHits.hasSearchHits() && scrollTime < pageNo) {// 根据上次搜索结果scroll_id进入下一页数据搜索
//            POST /_search/scroll
//            {
//                "scroll_id": "FGluY2x1ZGVfY29udGV4dF91dWlkDXF1ZXJ5QW5kRmV0Y2gBFnZndHRsM0lsU3VPQ0dLQnVwY0V4UlEAAAAAAAASqhZ4MTI3QUpXYVEtbWtjVU1WQ0d6S1Vn",
//                    "scroll": "60000ms"
//            }searchScrollHits = elasticsearchRestTemplate.searchScrollContinue(scrollId, scrollTimeInMillis, Goods.class, IndexCoordinates.of("goods"));//该方法执行后会重新刷新快照保留时间scrollId = searchScrollHits.getScrollId();scrollTime = scrollTime + 1;}List<String> scrollIds = new ArrayList<>();scrollIds.add(scrollId);// 清除 scroll
//        DELETE /_search/scroll
//        {
//            "scroll_id": [
//            "FGluY2x1ZGVfY29udGV4dF91dWlkDXF1ZXJ5QW5kRmV0Y2gBFnZndHRsM0lsU3VPQ0dLQnVwY0V4UlEAAAAAAAAgiBZ4MTI3QUpXYVEtbWtjVU1WQ0d6S1Vn"
//  ]
//        }
//        成功时返回
//        {
//            "succeeded" : true,
//                "num_freed" : 1
//        }elasticsearchRestTemplate.searchScrollClear(scrollIds);//4、 从缓存中读取数据for (SearchHit<Goods> searchHit : searchScrollHits.getSearchHits()) {Goods goods = searchHit.getContent();System.out.println(goods);}}/*** 范围查询(range)*/@Testpublic void range() {
//        GET /goods/_search?typed_keys=true&max_concurrent_shard_requests=5&search_type=query_then_fetch&batched_reduce_size=512
//        {
//            "from": 0,
//                "size": 10,
//                "query": {
//            "range": {
//                "price": {
//                    "from": 1000,
//                            "to": 2000,
//                            "include_lower": true,
//                            "include_upper": true,
//                            "boost": 1
//                }
//            }
//        },
//            "version": true,
//                "explain": false
//        }//查询条件RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery("price").from(1000).to(2000);//创建查询条件构建器SearchSourceBuilder(对应ES外面的大括号)NativeSearchQuery nativeSearchQuery = new NativeSearchQueryBuilder().withQuery(rangeQueryBuilder).build();//查询,获取查询结果SearchHits<Goods> search = elasticsearchRestTemplate.search(nativeSearchQuery, Goods.class);//获取总记录数System.out.println("totalHits = " + search.getTotalHits());//获取值返回search.getSearchHits().stream().map(SearchHit::getContent).forEach(System.out::println);}/*** boolQuery 查询*/@Testpublic void boolQuery() {
//        GET /goods/_search?typed_keys=true&max_concurrent_shard_requests=5&search_type=query_then_fetch&batched_reduce_size=512
//        {
//            "from": 0,
//                "size": 10,
//                "query": {
//            "bool": {
//                "must": [
//                {
//                    "match": {
//                    "title": {
//                        "query": "金立",
//                                "operator": "OR",
//                                "prefix_length": 0,
//                                "max_expansions": 50,
//                                "fuzzy_transpositions": true,
//                                "lenient": false,
//                                "zero_terms_query": "NONE",
//                                "auto_generate_synonyms_phrase_query": true,
//                                "boost": 1
//                    }
//                }
//                },
//                {
//                    "match": {
//                    "categoryName": {
//                        "query": "手机",
//                                "operator": "OR",
//                                "prefix_length": 0,
//                                "max_expansions": 50,
//                                "fuzzy_transpositions": true,
//                                "lenient": false,
//                                "zero_terms_query": "NONE",
//                                "auto_generate_synonyms_phrase_query": true,
//                                "boost": 1
//                    }
//                }
//                }
//      ],
//                "filter": [
//                {
//                    "range": {
//                    "price": {
//                        "from": 1000,
//                                "to": 2000,
//                                "include_lower": false,
//                                "include_upper": false,
//                                "boost": 1
//                    }
//                }
//                }
//      ],
//                "adjust_pure_negative": true,
//                        "boost": 1
//            }
//        },
//            "version": true,
//                "explain": false
//        }//查询条件(词条查询:对应ES query里的match)BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery().must(QueryBuilders.matchQuery("title", "金立")).must(QueryBuilders.matchQuery("categoryName", "手机")).filter(QueryBuilders.rangeQuery("price").gt(1000).lt(2000));//创建查询条件构建器SearchSourceBuilder(对应ES外面的大括号)NativeSearchQuery nativeSearchQuery = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).build();//查询,获取查询结果SearchHits<Goods> search = elasticsearchRestTemplate.search(nativeSearchQuery, Goods.class);//获取总记录数System.out.println("totalHits = " + search.getTotalHits());//获取值返回search.getSearchHits().stream().map(SearchHit::getContent).forEach(System.out::println);}/*** queryStringQuery查询* 案例:查询出必须包含 华为手机 词语的商品信息*/@Testpublic void queryStringQuery() {
//        GET /goods/_search?typed_keys=true&max_concurrent_shard_requests=5&search_type=query_then_fetch&batched_reduce_size=512
//        {
//            "from": 0,
//                "size": 10,
//                "query": {
//            "query_string": {
//                "query": "华为手机",
//                        "fields": [],
//                "type": "best_fields",
//                        "default_operator": "and",
//                        "max_determinized_states": 10000,
//                        "enable_position_increments": true,
//                        "fuzziness": "AUTO",
//                        "fuzzy_prefix_length": 0,
//                        "fuzzy_max_expansions": 50,
//                        "phrase_slop": 0,
//                        "escape": false,
//                        "auto_generate_synonyms_phrase_query": true,
//                        "fuzzy_transpositions": true,
//                        "boost": 1
//            }
//        },
//            "version": true,
//                "explain": false
//        }// 创建 queryString 查询构建器QueryStringQueryBuilder queryStringQueryBuilder = QueryBuilders.queryStringQuery("华为手机").defaultOperator(Operator.AND);//创建查询条件构建器SearchSourceBuilder(对应ES外面的大括号)NativeSearchQuery nativeSearchQuery = new NativeSearchQueryBuilder().withQuery(queryStringQueryBuilder).build();// 执行查询,然后处理响应结果SearchHits<Goods> search = elasticsearchRestTemplate.search(nativeSearchQuery, Goods.class);//获取总记录数System.out.println("totalHits = " + search.getTotalHits());//获取值返回search.getSearchHits().stream().map(SearchHit::getContent).forEach(System.out::println);}/*** 过滤source获取部分字段内容*/@Testpublic void sourceFilter() {//查询条件(词条查询:对应ES query里的match)BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery().must(QueryBuilders.matchQuery("title", "金立")).must(QueryBuilders.matchQuery("categoryName", "手机")).filter(QueryBuilders.rangeQuery("price").gt(1000).lt(2000));
//        GET /goods/_search?typed_keys=true&max_concurrent_shard_requests=5&search_type=query_then_fetch&batched_reduce_size=512
//        {
//            "from": 0,
//                "size": 10,
//                "query": {
//            "bool": {
//                "must": [
//                {
//                    "match": {
//                    "title": {
//                        "query": "金立",
//                                "operator": "OR",
//                                "prefix_length": 0,
//                                "max_expansions": 50,
//                                "fuzzy_transpositions": true,
//                                "lenient": false,
//                                "zero_terms_query": "NONE",
//                                "auto_generate_synonyms_phrase_query": true,
//                                "boost": 1
//                    }
//                }
//                },
//                {
//                    "match": {
//                    "categoryName": {
//                        "query": "手机",
//                                "operator": "OR",
//                                "prefix_length": 0,
//                                "max_expansions": 50,
//                                "fuzzy_transpositions": true,
//                                "lenient": false,
//                                "zero_terms_query": "NONE",
//                                "auto_generate_synonyms_phrase_query": true,
//                                "boost": 1
//                    }
//                }
//                }
//      ],
//                "filter": [
//                {
//                    "range": {
//                    "price": {
//                        "from": 1000,
//                                "to": 2000,
//                                "include_lower": false,
//                                "include_upper": false,
//                                "boost": 1
//                    }
//                }
//                }
//      ],
//                "adjust_pure_negative": true,
//                        "boost": 1
//            }
//        },
//            "version": true,
//                "explain": false,
//                "_source": {
//            "includes": [
//            "title",
//                    "categoryName"
//    ],
//            "excludes": []
//        }
//        }// 不需要获取source结果集SourceFilter sourceFilter = new FetchSourceFilterBuilder().withIncludes("title", "categoryName").build();//创建查询条件构建器SearchSourceBuilder(对应ES外面的大括号)NativeSearchQuery nativeSearchQuery = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withSourceFilter(sourceFilter).build();//查询,获取查询结果SearchHits<Goods> search = elasticsearchRestTemplate.search(nativeSearchQuery, Goods.class);//获取总记录数System.out.println("totalHits = " + search.getTotalHits());//获取值返回search.getSearchHits().stream().map(SearchHit::getContent).forEach(System.out::println);}/*** 高亮查询*/@Testpublic void highlightBuilder() {
//        GET /goods/_search?typed_keys=true&max_concurrent_shard_requests=5&search_type=query_then_fetch&batched_reduce_size=512
//        {
//            "from": 0,
//                "size": 10,
//                "query": {
//            "match": {
//                "title": {
//                    "query": "三星手机",
//                            "operator": "OR",
//                            "prefix_length": 0,
//                            "max_expansions": 50,
//                            "fuzzy_transpositions": true,
//                            "lenient": false,
//                            "zero_terms_query": "NONE",
//                            "auto_generate_synonyms_phrase_query": true,
//                            "boost": 1
//                }
//            }
//        },
//            "version": true,
//                "explain": false,
//                "highlight": {
//            "pre_tags": [
//            "<font color='red'>"
//    ],
//            "post_tags": [
//            "</font>"
//    ],
//            "fields": {
//                "title": {}
//            }
//        }
//        }//查询条件(词条查询:对应ES query里的match)MatchQueryBuilder matchQueryBuilder = QueryBuilders.matchQuery("title", "三星手机");//设置高亮三要素                                    field: 你的高亮字段    // preTags :前缀    // postTags:后缀HighlightBuilder highlightBuilder = new HighlightBuilder().field("title").preTags("<font color='red'>").postTags("</font>");//创建查询条件构建器SearchSourceBuilder(对应ES外面的大括号)NativeSearchQuery nativeSearchQuery = new NativeSearchQueryBuilder().withQuery(matchQueryBuilder).withHighlightBuilder(highlightBuilder).build();//查询,获取查询结果SearchHits<Goods> search = elasticsearchRestTemplate.search(nativeSearchQuery, Goods.class);//获取总记录数System.out.println("totalHits = " + search.getTotalHits());//获取值返回search.getSearchHits().stream().map(searchHit -> {//获得结果实体Goods goods = searchHit.getContent();//所有高亮结果Map<String, List<String>> highlightFields = searchHit.getHighlightFields();//遍历高亮结果for (Map.Entry<String, List<String>> stringListEntry : highlightFields.entrySet()) {String key = stringListEntry.getKey();//获取实体反射类Class<?> aClass = goods.getClass();try {//获取该实体属性Field declaredField = aClass.getDeclaredField(key);//权限为私的 解除!declaredField.setAccessible(true);//替换,把高亮字段替换到这个实体对应的属性值上declaredField.set(goods, stringListEntry.getValue().get(0));} catch (NoSuchFieldException | IllegalAccessException e) {e.printStackTrace();}}return goods;}).forEach(System.out::println);}/*** 案例:分别获取最贵的商品和获取最便宜的商品*/@Testpublic void aggMetric() {
//        GET /goods/_search?typed_keys=true&max_concurrent_shard_requests=5&search_type=query_then_fetch&batched_reduce_size=512
//        {
//            "from": 0,
//                "size": 10,
//                "version": true,
//                "explain": false,
//                "_source": {
//            "includes": [],
//            "excludes": []
//        },
//            "aggregations": {
//            "maxPrice": {
//                "max": {
//                    "field": "price"
//                }
//            },
//            "minPrice": {
//                "min": {
//                    "field": "price"
//                }
//            }
//        }
//        }NativeSearchQueryBuilder queryBuilder = new NativeSearchQueryBuilder();// 聚合条件queryBuilder.withAggregations(AggregationBuilders.max("maxPrice").field("price"),AggregationBuilders.min("minPrice").field("price"));//        queryBuilder.addAggregation(AggregationBuilders.max("maxPrice").field("price"));
//        queryBuilder.addAggregation(AggregationBuilders.min("minPrice").field("price"));queryBuilder.withSourceFilter(new FetchSourceFilterBuilder().build());//查询,获取查询结果SearchHits<Goods> searchHits = elasticsearchRestTemplate.search(queryBuilder.build(), Goods.class, IndexCoordinates.of("goods"));//获取聚合结果Aggregations aggregations = (Aggregations)searchHits.getAggregations().aggregations();assert aggregations != null;//打印聚合结果ParsedMax max = aggregations.get("maxPrice");System.out.println("最贵的价格:" + max.getValue());ParsedMin min = aggregations.get("minPrice");System.out.println("最便宜的价格:" + min.getValue());}/*** 根据商品分类聚合查询*/@Testpublic void aggBucket() {
//        GET /goods/_search?typed_keys=true&max_concurrent_shard_requests=5&search_type=query_then_fetch&batched_reduce_size=512
//        {
//            "from": 0,
//                "size": 10,
//                "version": true,
//                "explain": false,
//                "_source": {
//            "includes": [],
//            "excludes": []
//        },
//            "aggregations": {
//            "aggCategoryName": {
//                "terms": {
//                    "field": "categoryName",
//                            "size": 10,
//                            "min_doc_count": 1,
//                            "shard_min_doc_count": 0,
//                            "show_term_doc_count_error": false,
//                            "order": [
//                    {
//                        "_count": "desc"
//                    },
//                    {
//                        "_key": "asc"
//                    }
//        ]
//                }
//            }
//        }
//        }NativeSearchQueryBuilder queryBuilder = new NativeSearchQueryBuilder();// 聚合条件queryBuilder.withAggregations(AggregationBuilders.terms("aggCategoryName").field("categoryName").size(10));queryBuilder.withSourceFilter(new FetchSourceFilterBuilder().build());//查询,获取查询结果SearchHits<Goods> searchHits = elasticsearchRestTemplate.search(queryBuilder.build(), Goods.class, IndexCoordinates.of("goods"));//获取聚合结果
//        Aggregations aggregations = searchHits.getAggregations();
//        assert aggregations != null;
//        ParsedStringTerms aggCategoryName = aggregations.get("aggCategoryName");
//        //打印聚合结果
//        System.out.println(aggCategoryName.getBuckets());
//        for (Terms.Bucket bucket : aggCategoryName.getBuckets()) {
//            System.out.println(bucket.getKeyAsString() + "====" + bucket.getDocCount());
//
//        }System.out.println(searchHits.getAggregations());}/*** 根据价格区间分组查询*/@Testpublic void aggRange() {
//        GET /goods/_search?typed_keys=true&max_concurrent_shard_requests=5&search_type=query_then_fetch&batched_reduce_size=512
//        {
//            "from": 0,
//                "size": 10,
//                "version": true,
//                "explain": false,
//                "_source": {
//            "includes": [],
//            "excludes": []
//        },
//            "aggregations": {
//            "priceRange": {
//                "range": {
//                    "field": "price",
//                            "ranges": [
//                    {
//                        "to": 1000
//                    },
//                    {
//                        "from": 1000,
//                            "to": 3000
//                    },
//                    {
//                        "from": 3000
//                    }
//        ],
//                    "keyed": false
//                }
//            }
//        }
//        }NativeSearchQueryBuilder queryBuilder = new NativeSearchQueryBuilder();queryBuilder.withAggregations(AggregationBuilders.range("priceRange").field("price").addUnboundedTo(1000).addRange(1000, 3000).addUnboundedFrom(3000));queryBuilder.withSourceFilter(new FetchSourceFilterBuilder().build());SearchHits<Goods> searchHits = elasticsearchRestTemplate.search(queryBuilder.build(), Goods.class, IndexCoordinates.of("goods"));// 获取聚合信息Aggregations aggregations =(Aggregations) searchHits.getAggregations().aggregations();assert aggregations != null;ParsedRange priceRange = aggregations.get("priceRange");//获取总记录数System.out.println("totalHits = " + searchHits.getTotalHits());//获取值返回for (Range.Bucket bucket : priceRange.getBuckets()) {System.out.println(bucket.getKeyAsString() + "====" + bucket.getDocCount());}}/*** 根据日期分组查询出商品创建日期在"2017-09" - "2017-10" 之间的数据*/@Testpublic void aggDateRange() {
//        GET /goods/_search?typed_keys=true&max_concurrent_shard_requests=5&search_type=query_then_fetch&batched_reduce_size=512
//        {
//            "from": 0,
//                "size": 10,
//                "version": true,
//                "explain": false,
//                "_source": {
//            "includes": [],
//            "excludes": []
//        },
//            "aggregations": {
//            "dateRange": {
//                "date_range": {
//                    "field": "createTime",
//                            "format": "yyy-MM",
//                            "ranges": [
//                    {
//                        "from": "2017-09",
//                            "to": "2017-10"
//                    }
//        ],
//                    "keyed": false
//                }
//            }
//        }
//        }NativeSearchQueryBuilder queryBuilder = new NativeSearchQueryBuilder();// range查询包左不包右,即:[1,10)queryBuilder.withAggregations(AggregationBuilders.dateRange("dateRange").field("createTime").format("yyy-MM").addRange("2017-09", "2017-10"));queryBuilder.withSourceFilter(new FetchSourceFilterBuilder().build());SearchHits<Goods> searchHits = elasticsearchRestTemplate.search(queryBuilder.build(), Goods.class, IndexCoordinates.of("goods"));// 获取聚合信息Aggregations aggregations = (Aggregations)searchHits.getAggregations().aggregations();assert aggregations != null;ParsedDateRange priceRange = aggregations.get("dateRange");//获取总记录数System.out.println("totalHits = " + searchHits.getTotalHits());//获取值返回for (Range.Bucket bucket : priceRange.getBuckets()) {System.out.println(bucket.getKeyAsString() + "====" + bucket.getDocCount());}}/*** 根据品牌聚合获取出每个品牌的平均价格*/@Testpublic void subAgg() {
//        GET /goods/_search?typed_keys=true&max_concurrent_shard_requests=5&search_type=query_then_fetch&batched_reduce_size=512
//        {
//            "from": 0,
//                "size": 10,
//                "version": true,
//                "explain": false,
//                "aggregations": {
//            "brandNameAgg": {
//                "terms": {
//                    "field": "brandName",
//                            "size": 10,
//                            "min_doc_count": 1,
//                            "shard_min_doc_count": 0,
//                            "show_term_doc_count_error": false,
//                            "order": [
//                    {
//                        "_count": "desc"
//                    },
//                    {
//                        "_key": "asc"
//                    }
//        ]
//                },
//                "aggregations": {
//                    "avgPrice": {
//                        "avg": {
//                            "field": "price"
//                        }
//                    }
//                }
//            }
//        }
//        }NativeSearchQueryBuilder queryBuilder = new NativeSearchQueryBuilder();queryBuilder.withAggregations(AggregationBuilders.terms("brandNameAgg").field("brandName").subAggregation(AggregationBuilders.avg("avgPrice").field("price")));SearchHits<Goods> searchHits = elasticsearchRestTemplate.search(queryBuilder.build(), Goods.class, IndexCoordinates.of("goods"));// 获取聚合信息Aggregations aggregations = (Aggregations)searchHits.getAggregations().aggregations();assert aggregations != null;ParsedStringTerms brandeNameAgg = aggregations.get("brandNameAgg");//获取总记录数System.out.println("totalHits = " + searchHits.getTotalHits());//获取值返回for (Terms.Bucket bucket : brandeNameAgg.getBuckets()) {// 获取聚合后的品牌名称String brandName = bucket.getKeyAsString();// 获取聚合命中的文档数量long docCount = bucket.getDocCount();// 获取聚合后的品牌的平均价格,注意返回值不是Aggregation对象,而是指定的ParsedAvg对象ParsedAvg avgPrice = bucket.getAggregations().get("avgPrice");System.out.println(brandName + "======" + avgPrice.getValue() + "======" + docCount);}}/*** 根据商品分类聚合,获取每个商品类的平均价格,并且在商品分类聚合之上子聚合每个品牌的平均价格*/@Testpublic void subSubAgg() {
//        GET /goods/_search?typed_keys=true&max_concurrent_shard_requests=5&search_type=query_then_fetch&batched_reduce_size=512
//        {
//            "from": 0,
//                "size": 10,
//                "version": true,
//                "explain": false,
//                "aggregations": {
//            "categoryNameAgg": {
//                "terms": {
//                    "field": "categoryName",
//                            "size": 10,
//                            "min_doc_count": 1,
//                            "shard_min_doc_count": 0,
//                            "show_term_doc_count_error": false,
//                            "order": [
//                    {
//                        "_count": "desc"
//                    },
//                    {
//                        "_key": "asc"
//                    }
//        ]
//                },
//                "aggregations": {
//                    "categoryNameAvgPrice": {
//                        "avg": {
//                            "field": "price"
//                        }
//                    },
//                    "brandNameAgg": {
//                        "terms": {
//                            "field": "brandName",
//                                    "size": 10,
//                                    "min_doc_count": 1,
//                                    "shard_min_doc_count": 0,
//                                    "show_term_doc_count_error": false,
//                                    "order": [
//                            {
//                                "_count": "desc"
//                            },
//                            {
//                                "_key": "asc"
//                            }
//            ]
//                        },
//                        "aggregations": {
//                            "brandNameAvgPrice": {
//                                "avg": {
//                                    "field": "price"
//                                }
//                            }
//                        }
//                    }
//                }
//            }
//        }
//        }NativeSearchQueryBuilder queryBuilder = new NativeSearchQueryBuilder();// 注意这里聚合写的位置不要写错,很容易搞混,错一个括号就不对了queryBuilder.withAggregations(AggregationBuilders.terms("categoryNameAgg").field("categoryName").subAggregation(AggregationBuilders.avg("categoryNameAvgPrice").field("price")).subAggregation(AggregationBuilders.terms("brandNameAgg").field("brandName").subAggregation(AggregationBuilders.avg("brandNameAvgPrice").field("price"))));SearchHits<Goods> searchHits = elasticsearchRestTemplate.search(queryBuilder.build(), Goods.class, IndexCoordinates.of("goods"));// 获取聚合信息Aggregations aggregations = (Aggregations)searchHits.getAggregations().aggregations();assert aggregations != null;ParsedStringTerms categoryNameAgg = aggregations.get("categoryNameAgg");//获取总记录数System.out.println("totalHits = " + searchHits.getTotalHits());//获取值返回for (Terms.Bucket bucket : categoryNameAgg.getBuckets()) {// 获取聚合后的分类名称String categoryName = bucket.getKeyAsString();// 获取聚合命中的文档数量long docCount = bucket.getDocCount();// 获取聚合后的分类的平均价格,注意返回值不是Aggregation对象,而是指定的ParsedAvg对象ParsedAvg avgPrice = bucket.getAggregations().get("categoryNameAvgPrice");System.out.println(categoryName + "======" + avgPrice.getValue() + "======" + docCount);ParsedStringTerms brandNameAgg = bucket.getAggregations().get("brandNameAgg");for (Terms.Bucket brandeNameAggBucket : brandNameAgg.getBuckets()) {// 获取聚合后的品牌名称String brandName = brandeNameAggBucket.getKeyAsString();// 获取聚合后的品牌的平均价格,注意返回值不是Aggregation对象,而是指定的ParsedAvg对象ParsedAvg brandNameAvgPrice = brandeNameAggBucket.getAggregations().get("brandNameAvgPrice");System.out.println("   " + brandName + "======" + brandNameAvgPrice.getValue());}}}}

这篇关于Elasticsearch 7.17.6 windows环境下学习的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/191274

相关文章

使用Python创建一个功能完整的Windows风格计算器程序

《使用Python创建一个功能完整的Windows风格计算器程序》:本文主要介绍如何使用Python和Tkinter创建一个功能完整的Windows风格计算器程序,包括基本运算、高级科学计算(如三... 目录python实现Windows系统计算器程序(含高级功能)1. 使用Tkinter实现基础计算器2.

Android开发环境配置避坑指南

《Android开发环境配置避坑指南》本文主要介绍了Android开发环境配置过程中遇到的问题及解决方案,包括VPN注意事项、工具版本统一、Gerrit邮箱配置、Git拉取和提交代码、MergevsR... 目录网络环境:VPN 注意事项工具版本统一:android Studio & JDKGerrit的邮

Windows系统宽带限制如何解除?

《Windows系统宽带限制如何解除?》有不少用户反映电脑网速慢得情况,可能是宽带速度被限制的原因,只需解除限制即可,具体该如何操作呢?本文就跟大家一起来看看Windows系统解除网络限制的操作方法吧... 有不少用户反映电脑网速慢得情况,可能是宽带速度被限制的原因,只需解除限制即可,具体该如何操作呢?本文

windows和Linux使用命令行计算文件的MD5值

《windows和Linux使用命令行计算文件的MD5值》在Windows和Linux系统中,您可以使用命令行(终端或命令提示符)来计算文件的MD5值,文章介绍了在Windows和Linux/macO... 目录在Windows上:在linux或MACOS上:总结在Windows上:可以使用certuti

IntelliJ IDEA 中配置 Spring MVC 环境的详细步骤及问题解决

《IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决》:本文主要介绍IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决,本文分步骤结合实例给大... 目录步骤 1:创建 Maven Web 项目步骤 2:添加 Spring MVC 依赖1、保存后执行2、将新的依赖

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

Windows 上如果忘记了 MySQL 密码 重置密码的两种方法

《Windows上如果忘记了MySQL密码重置密码的两种方法》:本文主要介绍Windows上如果忘记了MySQL密码重置密码的两种方法,本文通过两种方法结合实例代码给大家介绍的非常详细,感... 目录方法 1:以跳过权限验证模式启动 mysql 并重置密码方法 2:使用 my.ini 文件的临时配置在 Wi

Windows Docker端口占用错误及解决方案总结

《WindowsDocker端口占用错误及解决方案总结》在Windows环境下使用Docker容器时,端口占用错误是开发和运维中常见且棘手的问题,本文将深入剖析该问题的成因,介绍如何通过查看端口分配... 目录引言Windows docker 端口占用错误及解决方案汇总端口冲突形成原因解析诊断当前端口情况解

Python如何自动生成环境依赖包requirements

《Python如何自动生成环境依赖包requirements》:本文主要介绍Python如何自动生成环境依赖包requirements问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录生成当前 python 环境 安装的所有依赖包1、命令2、常见问题只生成当前 项目 的所有依赖包1、

Redis在windows环境下如何启动

《Redis在windows环境下如何启动》:本文主要介绍Redis在windows环境下如何启动的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Redis在Windows环境下启动1.在redis的安装目录下2.输入·redis-server.exe