一,【es版本】

依赖:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency><elasticsearch.version>7.1.0</elasticsearch.version>

es依赖,版本号
存在版本匹配问题
为什么high level版本是 7.6.2
bulkIndex 底层分批

二,【should must filter matchQuery termQuery 区别联系】
BoolQueryBuilder queryBuilder = buildQueryBuilder()
should must filter 属于BoolQueryBuilder方法,相当于父层级,方法入参:QueryBuilder 。相当于:and or
matchQuery termQuery 属于 QueryBuilders 方法,相当于子层级,作为上面入参:构建条件为上面参数 QueryBuilder 子类,多态实现。相当于:= like,也比较符合sql写法:先and或者or,再写具体条件 是精确匹配还是模糊匹配。
代码示例:
BoolQueryBuilder queryBuilder = buildQueryBuilder();
    queryBuilder.should(QueryBuilders.matchQuery("name", queryWord))
            .should(QueryBuilders.termQuery("name" + ".keyword", queryWord))
            .should(QueryBuilders.wildcardQuery("spy", "" + queryWord + "*"))
            .should(QueryBuilders.wildcardQuery("fpy", "" + queryWord + "*")).minimumShouldMatch(1);
参考文档:            
https://blog.csdn.net/lom9357bye/article/details/52852533
    
三,【matchQuery 完全可以满足要求,.keyword什么用】
代码如下
queryBuilder.should(QueryBuilders.matchQuery("name", queryWord))
            .should(QueryBuilders.termQuery("name" + ".keyWord", queryWord))
什么场景用 .keyword,名字查询。
比如现在es中存在数据名字有 杜兰特,莫兰特 兰特 布莱恩特 米兰。现在查询条件“兰特”,
如果只用matchQuery,完全可以查询到所有数据,因为条件 兰特 本身会分词,名字中包含 '兰' 或者 '特'。
查询结果如下:杜兰特 兰特 莫兰特 布莱恩特 米兰,但是有一个问题,名字为:'兰特',为什么不是在第一个被检索到。
这时候 .keyword上场了,可以解决这个问题。
参考这个:
https://blog.csdn.net/tyw15/article/details/111930660
            
四,【es 增删改查实现方式】
1.RestHighLevelClient 
2.ElasticsearchRepository--PagingAndSortingRepository(page)--CrudRepository--Repository。底层到spring repository
 ElasticsearchRepository --Page<T> search(QueryBuilder var1, Pageable var2);-----分页用这个可以,可以添加查询条件
2.AbstractElasticsearchRepository--ElasticsearchRepository
3.ElasticsearchRestTemplate --AbstractElasticsearchTemplate--ElasticsearchOperations-- extends DocumentOperations(bulkIndex), SearchOperations
ElasticsearchRepository 实现原理完全有方法名决定,不需要实现

【ElasticsearchRepository实现原理】
https://blog.csdn.net/u013089490/article/details/84323903

【FuzzyQueryBuilder模糊、WildcardQueryBuilder模糊 区别】

五,【索引自动生成,什么时候,在哪里】
首先需要定义实体类加注解,代码中@Document(indexName = "manager", shards = 1, replicas = 0, refreshInterval = "10s", createIndex = true)
1.项目启动时创建_源码——AbstractElasticsearchRepository 判断条件是 1.根据注解属性 createIndex 是否等于true 2.索引是否存在
2.写入es数据时创建

但是经过测试
1.项目启动,自动创建设置为true,并没有创建索引,索引之前也不存在。那原因可能是索引从缓存中获取,缓存中还存在索引
2.写入数据时,确实自动创建了索引,无论createIndex = true or false。
由此推断,两种创建索引原理不同。
方式2创建索引,原理,待补充。

六,【自动创建索引,字段分析】

实体中定义vs mapping
日期类型:自动创建类型是 long 
Doulbe:float类型
integer: long
String:默认会生成两种类型 text keyword,无论实体中指定类型是keyword text,并没有效果

七,【手动创建与自动创建 选哪一个】
问题重现:手动创建一个索引,字段是下划线间隔。但是后面发现索引mapping多了几个字段,驼峰形式。
原因:写入es数据时,实体中存在mapping中之前没有的字段,会重现生成(驼峰vs下划线),索引没有重建,只是变更了mapping

解决方案:
1.禁止自动创建,手动创建
2.实体字段与索引字段定义为一样,不新增。不带下划线
3.实体转下划线,用JSONField(a_b),生成mapping字段还是驼峰,非下划线
暂定方式二。
测试手动创建,援引自动创建代码_AbstractElasticsearchRepository,但是结果是严格按照定义的字段创建,且不加filed字段,不产生字段。自动创建格式见上

八,【数据重复写入覆盖,非增量】
把唯一业务字段写入es主键

记录es几个问题,增删改查,索引创建相关推荐

  1. pymysql 增删改 查 索引

    pymysql 模块的使用 pip install pymysql username = input ("请输入用户") pwd = input ("请输入密码" ...

  2. mysql 删除权限记录_mysql-数据(记录)相关操作(增删改查)及权限管理

    一.介绍 在MySQL管理软件中,可以通过SQL语句中的DML语言来实现数据的操作,包括 使用INSERT实现数据的插入 UPDATE实现数据的更新 使用DELETE实现数据的删除 使用SELECT查 ...

  3. mysql-数据(记录)相关操作(增删改查)及权限管理

    一.介绍 在MySQL管理软件中,可以通过SQL语句中的DML语言来实现数据的操作,包括 使用INSERT实现数据的插入 UPDATE实现数据的更新 使用DELETE实现数据的删除 使用SELECT查 ...

  4. oracle 删除xml记录,Oracle之xml的增删改查操作

    工作之余,总结一下xml操作的一些方法和心得! tip: xmltype函数是将clob字段转成xmltype类型的函数,若字段本身为xmltype类型则不需要引用xmltype()函数 同名标签用数 ...

  5. MySQL数据库5.7版本安装部署及常规命令 增删改查 索引 事务 优化

    概述:数据库(Database)是按照数据结构组织.存储和管理数据的仓库,它产生于距今六十多年前,数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统,在各个方面得 ...

  6. Solr增删改查索引

    一.添加索引,提交文档 1.如图,我的xml文档有predicate.object字段,这些在Solr配置文档里没有,所以xml文档提交不了 2.在F:\solr-4.10.0\example\sol ...

  7. 详细记录->使用Maven+SSM框架,实现单表简单的增删改查

    话不多说,ssm框架整合小栗子 步骤 1.创建web Maven项目 2.创建数据库配置文件:jdbc.properties 3.项目总体目录: 4.添加spring配置文件:applicationC ...

  8. 【SpringBoot集成ElasticSearch 02】Java HTTP Rest client for ElasticSearch Jest 客户端集成(配置+增删改查测试源码)【推荐使用】

    1.简介 SpringBoot 项目初始化时就有 NoSQL 选项 Spring Data Elasticsearch(Access+Driver) 此时 pom 文件里引入的依赖是 spring-b ...

  9. JDBC+MySQL入门增删改查案例

    目录 前言 案例分析 核心思路拆解 案例涉及知识点 第一关 创建数据库和项目 创建数据库 创建项目 第二关 JDBC插入和查询 预备工作 单个插入 批量插入 查询数据 JDBC修改和删除 修改数据 删 ...

  10. python对sqlite增删改查_Python操作sqlite3数据库 增删改查

    SQLite,是一款轻型的数据库,占用资源非常的低.这里记录下对sqlite3的增删改查相关操作,顺便复习一下SQL语句- -. 一.创建数据库 连接到一个现有的数据库.如果数据库不存在,那么它就会被 ...

最新文章

  1. SAP HUM 锁住一个HU?
  2. Python之flask结合Bootstrap框架快速搭建Web应用
  3. XML Tree(树形结构)
  4. app+java_‎App Store 上的“Java大全”
  5. Git实战(二)原理
  6. Oracle数据库用户名密码【转载自百度经验】
  7. CSDN开博三周年--回首向来萧瑟处,铁马冰河入梦来
  8. 希捷2t服务器硬盘是什么盘,希捷酷鱼2T 3.5寸硬盘晒单以及小白安装应该避免的坑...
  9. matlab中stract用法_matlab初学之strcat、num2str
  10. a与文件下载-(下载一)
  11. 使用Photoshop变化一张图片的颜色深浅
  12. stata 均值和标准差
  13. 直播人数的统计(一)
  14. 兄弟们,我又回来了,干货太多让你们久等了
  15. 一顿饭的时间,教你怎样快速使用 动态代理ip 做一个获取Steam 热销商品 的方法
  16. 采用CCG和kkt条件编制两阶段鲁棒优化程序,以储能、发电、风电和光伏容量作为第一阶段变量
  17. 运维老鸟总结_硬件堡垒机、软件堡垒机、云堡垒机品牌怎么选?
  18. oracle 移动分区表到指定表空间,及修改表的默认表空间
  19. 创业兵法—选择最适合你的创业项目
  20. npm编译报错You may need an additional loader to handle the result of these loaders

热门文章

  1. python 判断某个字符是否为中文
  2. 获得硬盘的ID序列号(XE10.1+WIN8.1)
  3. Spinner的简单实用
  4. Java连接各种数据库
  5. sql server 2005 T-SQL @@TOTAL_WRITE (Transact-SQL)
  6. freeswitch的dialplan中condition变量
  7. linux文件系统之mount流程分析
  8. 使用curl与wget发送get与post请求
  9. 【图论】用匈牙利算法找女朋友(纯爱党的大胜利)
  10. 【DFS】n皇后问题(代码逐句分析)