<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ## 一、概述 雖然Spring Data Elasticsearch提供了兩套接口機制,平臺使用的是Elasticsearch Repositories接口; 這里,將以一個實際的例子,來展示如何基于Elasticsearch Repositories接口實現自己的業務需求; ## 二、模型定義 ``` package com.ray.mall.search.model; import org.springframework.data.annotation.Id; import org.springframework.data.domain.Persistable; import org.springframework.data.elasticsearch.annotations.Document; import org.springframework.data.elasticsearch.annotations.Field; import org.springframework.data.elasticsearch.annotations.FieldType; /** * @author fangwei * @version 3.0.9 * @date 2021年10月28日 */ @Document(indexName = "rayphonenumber") public class PhoneNumber implements Persistable<String> { @Id private String id; @Field(value = "area", type = FieldType.Text, analyzer = "ik_smart", searchAnalyzer = "ik_smart") private String area; @Field(value = "service-provider", type = FieldType.Text, analyzer = "ik_smart", searchAnalyzer = "ik_smart") private String serviceProvider; @Field(value = "number", type = FieldType.Text) private String number; @Field(value = "full-number", type = FieldType.Keyword) private String fullNumber; @Field(value = "sku-id", type = FieldType.Long) private long skuId; @Field(value = "spu-id", type = FieldType.Long) private long spuId; @Field(value = "price", type = FieldType.Long) private long price; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getArea() { return area; } public void setArea(String area) { this.area = area; } public String getServiceProvider() { return serviceProvider; } public void setServiceProvider(String serviceProvider) { this.serviceProvider = serviceProvider; } public String getNumber() { return number; } public void setNumber(String number) { this.number = number; } public String getFullNumber() { return fullNumber; } public void setFullNumber(String fullNumber) { this.fullNumber = fullNumber; } public long getSkuId() { return skuId; } public void setSkuId(long skuId) { this.skuId = skuId; } public long getSpuId() { return spuId; } public void setSpuId(long spuId) { this.spuId = spuId; } public long getPrice() { return price; } public void setPrice(long price) { this.price = price; } @Override public boolean isNew() { return id == null; } } ``` >[danger] 特別注意: > 1、ElasticSearch中的字段名稱必須為小寫; ## 三、倉庫定義 主要用接口內置的方法實現實體的CUD; ``` public interface PhoneNumberRepository extends ElasticsearchRepository<PhoneNumber, String> { PhoneNumber findByNumber(String number); } ``` ## 四、業務操作 ``` @Autowired private PhoneNumberRepository phoneNumberRepository; //新增/更新索引文檔 PhoneNumber ph = phoneNumberRepository.findByNumber(sku.getSkuVirtualData()); if (ph == null) { ph = new PhoneNumber(); ph.setNumber(sku.getSkuVirtualData()); } ph.setArea(sku.getSkuCategoryTitle()); ph.setServiceProvider("中國移動"); phoneNumberRepository.save(ph); ``` ## 五、搜索 ``` Pageable pageable = PagableBuilder.getPageable(curPage, pageSize, orderFieldName, orderDirection); Query query = new NativeSearchQueryBuilder()// .withQuery(QueryBuilders.matchQuery("area", area))// .withPageable(pageable).build(); SearchPage<PhoneNumber> searchPage = SearchHitSupport.searchPageFor(elasticsearchOperations.search(query, PhoneNumber.class), query.getPageable()); model.setPageobject(searchPage); ``` ``` QueryBuilders.boolQuery() .should(QueryBuilders.termQuery("area",area)) .should(QueryBuilders.matchQuery("number", number)) .mustNot(QueryBuilders.prefixQuery("service-provider", service-provider)) ``` >[danger] > 1、簡單的來說,可以把搜索的工作,集中到如何構造一個合適的Query對象; > 2、QueryBuilders可以構造各種查詢方式,termQuery精確查詢、matchQuery分詞精確查詢;fuzzyQuery左右模糊查詢、prefixQuery前綴模糊查詢、wildcardQuery通配符模糊查詢;rangeQuery范圍查詢;以及把以上集中查詢組合在一起的boolQuery多關鍵字組合查詢等等;
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看