bboss-elasticsearch--API 今天药忘吃喽~ 2023-01-01 15:50 137阅读 0赞 原文网址:[bboss-elasticsearch--API\_IT利刃出鞘的博客-CSDN博客][bboss-elasticsearch--API_IT_-CSDN] # 其他网址 # [Elasticsearch索引文档增删改查 - Elasticsearch Bboss][Elasticsearch_ - Elasticsearch Bboss] [Elasticsearch开发指南 - Elasticsearch Bboss][Elasticsearch_ - Elasticsearch Bboss 1] # 注解 # **其他网址** > [ElasticSearch客户端注解介绍 - Elasticsearch Bboss][ElasticSearch_ - Elasticsearch Bboss] ## 属性注解 ## <table> <tbody> <tr> <td style="width:89px;"><strong>注解</strong></td> <td style="width:341px;"><strong>说明</strong></td> <td style="width:505px;"><strong>重要属性/示例</strong></td> </tr> <tr> <td style="width:89px;">@ESId</td> <td style="width:341px;"> <p>指定文档id值,作为文档唯一标识。</p> <p>根据此值对应的索引文档存在与否来决定添加或者修改操作(存在则修改,不存在则添加)。</p> <p>若不用此注解,添加文档时es自动设置文档id属性。</p> </td> <td style="width:505px;"> <p>// 是否将注解属性作为普通文档属性来<strong>保存</strong>。<br> boolean persistent() default true;</p> <p>// 查询/检索文档时,是否将文档id设置给对应被注解的属性<br> boolean readSet() default true;</p> <p><strong>示例</strong>:</p> <p>//ip作为id,根据ip值对应的索引文档存在与否来决定添加或修改</p> <p>@ESId(readSet = true,persistent = false)<br> private String ip;</p> </td> </tr> <tr> <td style="width:89px;">@ESParentId</td> <td style="width:341px;">指定为parentid</td> <td style="width:505px;"> <p>// 是否将注解属性作为普通文档属性来<strong>保存</strong>。<br> boolean persistent() default true;</p> <p>// 查询/检索文档时,是否将文档id设置给对应被注解的属性<br> boolean readSet() default true;</p> </td> </tr> <tr> <td style="width:89px;">@ESVersion</td> <td style="width:341px;"> <p>指定为文档版本信息。</p> </td> <td style="width:505px;">// 是否将注解属性作为普通文档属性来<strong>保存</strong>。<br> boolean persistent() default true;</td> </tr> <tr> <td style="width:89px;">@ESVersionType</td> <td style="width:341px;"> <p>指定文档版本类型。</p> </td> <td style="width:505px;">// 是否将注解属性作为普通文档属性来<strong>保存</strong>。<br> boolean persistent() default true;</td> </tr> <tr> <td style="width:89px;">@ESRetryOnConflict</td> <td style="width:341px;">文档修改操作版本冲突重试次数</td> <td style="width:505px;">// 是否将注解属性作为普通文档属性来<strong>保存</strong>。<br> boolean persistent() default true;</td> </tr> <tr> <td style="width:89px;">@ESRouting</td> <td style="width:341px;">路由信息</td> <td style="width:505px;">// 是否将注解属性作为普通文档属性来<strong>保存</strong>。<br> boolean persistent() default true;</td> </tr> <tr> <td style="width:89px;">@ESDocAsUpsert</td> <td style="width:341px;">文档不存在时是否添加文档</td> <td style="width:505px;">// 是否将注解属性作为普通文档属性来<strong>保存</strong>。<br> boolean persistent() default true;</td> </tr> <tr> <td style="width:89px;">@ESSource</td> <td style="width:341px;">返回值是否包含文档source数据的控制变量</td> <td style="width:505px;">// 是否将注解属性作为普通文档属性来<strong>保存</strong>。<br> boolean persistent() default true;</td> </tr> <tr> <td style="width:89px;">@Column</td> <td style="width:341px;"> <p>指定索引文档和对象属性的映射关系、指定日期格式等。</p> <p>指定日期格式时一般与@JsonFormat一起使用。例如:</p> <p>@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss.SSS")</p> <p>@Column(dataformat = "yyyy-MM-dd HH:mm:ss.SSS")</p> </td> <td style="width:505px;"> <p>escape:是否对参数值进行特殊字符转义处理。true 处理;false 不处理。</p> <p>默认为空,这时若是map传递参数,默认转义;若是bean传值,若bean属性指定了@Column(escape="false")则按照注解中设置的escape属性值来控制是否转义,若没在column注解中指定escape,则默认转义。</p> <p><strong>示例</strong>:</p> <p>@Column(name="docInfo.author",dataformat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'",timezone = "Etc/UTC",locale = "zh")</p> <p>private String docInfoAuthor;</p> </td> </tr> <tr> <td style="width:89px;">@JsonIgnore</td> <td style="width:341px;">不作为es字段保存</td> <td style="width:505px;"> <p>@JsonIgnore</p> <p>private Integer sqlEndElapsed;</p> </td> </tr> <tr> <td style="width:89px;">@PrimaryKey</td> <td style="width:341px;"> <p>跟@EsId作用一样(推荐用@EsId)</p> <p>@EsId比@PrimaryKey多两个属性:readSet,persistent</p> </td> <td style="width:505px;"></td> </tr> </tbody> </table> ## @EsIndex ## bboss 5.6.8新增了一组添加和修改文档的api,这组api没有带indexName和indextype参数,对应的索引和索引type在po对象中通过@ESIndex注解来指定。 @ESIndex提供了两个属性name和type,使用方法: @ESIndex(name="indexName") //es 7不需要指定type @ESIndex(name="indexName",type="indexName") // 索引名称由indexName和日期类型字段agentStarttime通过yyyy.MM.dd格式化后的值拼接而成,索引类型为indexName @ESIndex(name="indexName-{agentStarttime,yyyy.MM.dd}",type="indexName") // 索引名称由indexName和当前日期通过yyyy.MM.dd格式化后的值拼接而成,索引类型为type字段对应的值 @ESIndex(name="indexName-{dateformat=yyyy.MM.dd}",type="{type}") // 索引名称由indexName和日期类型字段agentStarttime通过yyyy.MM.dd格式化后的值拼接而成,索引类型为type字段对应的值 @ESIndex(name="indexName-{field=agentStarttime,dateformat=yyyy.MM.dd}",type="{field=type}") 示例 @ESIndex(name="indexName",type="indexType") public class MyEntiry { //设定文档标识字段 @ESId(readSet = true,persistent = false) private Long demoId; ... } # ClientInterface # 可以通过两种方法获得ClientInterface。都是单实例多线程安全的。(实际上,BBossESStarter 里边就是调用的ElasticSearchHelper的静态方法。。。) **SpringBoot环境:注入BBossESStarter 后获取** > @Autowired > private BBossESStarter bbossESStarter; > > ClientInterface clientInterface = bbossESStarter.getRestClient(); > //ClientInterface clientInterface = bbossESStarter.getConfigRestClient("esmapper/xxx.xml"); > > SpringBoot环境通过下边的方法获取也能用,但官方说要使用本处方法,但没有给出原因。经自己使用,SpringBoot环境下使用本方法的优点: > > 1.能输出向ES服务器发出的请求到控制台 **非SpringBoot环境:ElasticSearchHelper静态方法** > ClientInterface clientInterface = ElasticSearchHelper.getRestClientUtil(); > //ClientInterface clientInterface = ElasticSearchHelper.getConfigRestClientUtil("esmapper/xxx.xml"); 除了通过ESId和ESParentId这两个注解来指定文档id和parentid,ClientInterface接口中还提供了一组方法来提供docid和parentid两个参数来指定文档id和parentid。 # ClientInterfaceNew # [bboss-elasticsearch--API_IT_-CSDN]: https://knife.blog.csdn.net/article/details/112148427 [Elasticsearch_ - Elasticsearch Bboss]: https://esdoc.bbossgroups.com/#/document-crud [Elasticsearch_ - Elasticsearch Bboss 1]: https://esdoc.bbossgroups.com/#/development [ElasticSearch_ - Elasticsearch Bboss]: https://esdoc.bbossgroups.com/#/client-annotation?id=elasticsearch%E5%AE%A2%E6%88%B7%E7%AB%AF%E6%B3%A8%E8%A7%A3%E4%BD%BF%E7%94%A8%E4%BB%8B%E7%BB%8D
还没有评论,来说两句吧...