1、es的tcp端口9200和9300区别
9200:es节点与外部通讯使用
9300: es节点之间内部使用
2、乐观锁与悲观锁
乐观锁不会阻塞线程,悲观锁会。
3、查看es的分词器如何分词
一般es默认的分词器对中文分词不友好,会把一个词语分词成单独的一个汉字。可以安装分词器插件,例如"ik_smart"。
查看分词器是怎么分词的,可以使用如下接口调用:
curl -H "Content-Type: application/json" "用户名密码和ip信息:9200/_analyze" -d'
{
"analyzer":"standard", //分词器名称,可以是"ik_smart"
"text":"中华人民共和国"
}'
4、ElasticSearch存储的数据结构
ElasticSearch是文件存储,一条数据就是一个文档。文档是JSON格式。
5、ElasticSearch与关系数据库概念映射
ElasticSearch | 索引(Index) | 类型(Type) | 文档(Documents) | 字段(Fields) |
关系数据库 | 数据库 | 表 | 行 | 列 |
6、ElasticSearch常用查询curl命令
查询所有index
curl -H "Content-Type: application/json" "用户名密码和ip信息:9200/_cat/indices?v"
该命令后面可加上grep对结果做过滤
删除数据
curl -XPOST -H "Content-Type: application/json" "http://用户名:密码@ip:port/index名称/_delete_by_query?pretty=true" -d'{
"query": {
"term": {
"_id": 1616470622224
}
}
}'
curl -XPOST -H "Content-Type: application/json" "http://用户名:密码@ip:port/index名称/_delete_by_query?pretty=true" -d'{
"query": {
"match_all": {
}
}
}'
查询数据
curl -H "Content-Type: application/json" -XPOST "http://用户名:密码@ip:port/index名称/_search?pretty=true" -d'{
"query": {
"bool": {
"must": [{
"match": {
"fieldName": "value"
}
}]
}
}
}'
更新数据
curl -XPOST "http://用户名:密码@ip:port/index名称/type名称/数据id/_update?pretty=true" -d '{
"doc": {
"fieldName": "value"
}
}'
查询文档映射
curl -H "Content-Type: application/json" "用户名密码和ip信息:9200/index名称/_mapping"
7、文档映射
动态映射:我们知道,在关系数据库中,需要事先创建数据库,然后在该数据库实例下创建数据表,然后才能在该数据表中插入数据。而ElasticSearch中不需要事先定义映射(Mapping),文档写入ElasticeSearch时,会根据文档字段自动识别类型,这种机制称之为动态映射。
其中,数字类型的字段自动映射成long类型
静态映射:在ElasticeSearch中也可以事先定义好映射,包含文档的各个字段及其类型等,这种方式称之为静态映射。
8、String类型的text和keyword区别
text会进行分词查询
keyword不会进行分词查询
keyword类型的字段,进行模糊匹配查询是不生效的。例如文档里的字段car被定义成了keyword类型,index中car字段的值是“奥迪A4”、“奥迪A6”。这时进行如下查询:
GET index名称/type名称/_search
{
"from":0,
"size":2,
"query":{"match":{"car":"奥迪"}}
}
可以发现查询不到结果。但是如果字段被定义成text类型就可以查询到。
9、Term查询和Match查询区别
Term查询不会对字段进行分词查询,会采用精确匹配
Match会根据该字段的分词器,进行分词查询
参考内容:Elasticsearch入门到精通视频教程【免费学习】-学习视频教程-腾讯课堂