es基础

☆樱花仙子☆ 提交于 2020-08-11 19:44:05

一、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

  1. 查看所有索引 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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!