一、es中的基本概念
- 索引(index):类似于db中的database概念。一个可检索的文档对象的集合。
- 类型(type):相当于table
- 文档(document):相当于数据库中的row。是es中可以被检索的基本单位
- 字段(field):相当于数据库中的column。es中,每个文档都是以json形式存储的。一个文档可以被视为多个字段的集合。
- 映射(mapping):相当于数据库中的schema,用来约束字段的类型,不过es的mapping可以不显示指定,自动根据文档的数据创建
- 副本分片(Replica shard):每个主分片可以有一个或者多个副本,个数是用户自己配置的。es会尽量将同一索引的不同分片分布到不同的节点,提高容错性。对于一个索引,只要不是所有的shards所在的机器都挂了,就还能用。
- 主分片:索引的一个物理子集。同一个索引再物理上可以切多个分片,分布到不同的节点上。分片的实现是lucene中的索引。
二、es的使用
1.TermQueryBuilder,单个查询,仅匹配在给定字段中含有该词条的文档,而且是确切的、未经分析的词条
//查询type中id为给定参数的文档
TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("id",param.getId());
2.WildcardQueryBuilder模糊查询
//wildcardQuery()模糊查询
WildcardQueryBuilder wildcardQueryBuilder =
QueryBuilders.wildcardQuery("studentName","*"+param.getStudentName()+"*");
3.BoolQueryBuilder复合查询,使用must,相当于and条件,使用should相当于or
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
boolQueryBuilder.must(wildcardQueryBuilder);
boolQueryBuilder.must(termQueryBuilder);
4.MatchQueryBuilder,匹配单个字段
5.MatchQueryBuilder和TermQueryBuilder类似
使用TermQueryBuilder需要转换成全小写,而MatchQueryBuilder不需要。原因MatchQueryBuild er会经过解析并分词,在此过程已被转换为全小写。而TermQueryBuilder输入的词条不会经过处理。(待验证)
es的端口
9200作为http协议,主要用于外部通讯 9300作为tcp协议,jar之间就是通过tcp协议通讯 es集群之间是通过9300进行通讯
postman访问es
- 查看所有索引
http://10.28.149.198:9200/_cat/indices?v
参考: https://www.cnblogs.com/luxiaoxun/archive/2015/10/11/4869509.html https://blog.csdn.net/egg1996911/article/details/82380026
来源:oschina
链接:https://my.oschina.net/wuyiyi/blog/4285095