国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

ES-1:Java的 ElasticsearchTemplate Or ElasticsearchRepository基礎(chǔ)常用查詢寫法

這篇具有很好參考價值的文章主要介紹了ES-1:Java的 ElasticsearchTemplate Or ElasticsearchRepository基礎(chǔ)常用查詢寫法。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

目錄

安裝elasticsearch

maven

數(shù)據(jù)來源: 網(wǎng)易數(shù)據(jù)

mysql的相關(guān)語法

Java代碼文章來源地址http://www.zghlxwxcb.cn/news/detail-608832.html


安裝elasticsearch

docker run -p 9200:9200 -p 9300:9300 --name es_643 -d elasticsearch:6.4.3

maven

    <parent>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-parent</artifactId>
       <version>2.1.16.RELEASE</version>
    </parent>

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

數(shù)據(jù)來源: 網(wǎng)易數(shù)據(jù)

https://c.m.163.com/ug/api/wuhan/app/data/list-total?t=334061612053

mysql的相關(guān)語法

  1. =
  2. in
  3. like
  4. >
  5. between? and
  6. is null
  7. is not null
  8. order by
  9. max min avg sum (發(fā)現(xiàn)es新語法stats直接統(tǒng)計聚合)

Java代碼

import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.net.InetAddress;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import lombok.Data;
import lombok.ToString;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.TransportAddress;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.DisMaxQueryBuilder;
import org.elasticsearch.index.query.ExistsQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.aggregations.Aggregation;
import org.elasticsearch.search.aggregations.AggregationBuilders;
import org.elasticsearch.search.aggregations.metrics.avg.InternalAvg;
import org.elasticsearch.search.aggregations.metrics.max.InternalMax;
import org.elasticsearch.search.aggregations.metrics.min.InternalMin;
import org.elasticsearch.search.aggregations.metrics.stats.InternalStats;
import org.elasticsearch.search.aggregations.metrics.sum.InternalSum;
import org.elasticsearch.search.aggregations.support.ValueType;
import org.elasticsearch.search.sort.FieldSortBuilder;
import org.elasticsearch.search.sort.SortBuilders;
import org.elasticsearch.search.sort.SortMode;
import org.elasticsearch.search.sort.SortOrder;
import org.elasticsearch.transport.client.PreBuiltTransportClient;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;
import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
import org.springframework.data.elasticsearch.core.aggregation.AggregatedPage;
import org.springframework.data.elasticsearch.core.query.IndexQuery;
import org.springframework.data.elasticsearch.core.query.NativeSearchQuery;
import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;

public class EsTest {


  public static void main(String[] args) throws Exception {
//    String data = HttpUtil.get(
//        "https://c.m.163.com/ug/api/wuhan/app/data/list-total?t=334061612053");
//    JSONObject parseObject = JSONObject.parseObject(data);
//    JSONObject dataobj = parseObject.getJSONObject("data");
//    JSONArray areaTree = dataobj.getJSONArray("areaTree");
//    List<IndexQuery> queries = new ArrayList<>();
//    for (int i = 0; i < areaTree.size(); i++) {
//      JSONObject jsonObject = areaTree.getJSONObject(i);
//      String name = jsonObject.getString("name");
//      String id = jsonObject.getString("id");
//      JSONObject total = jsonObject.getJSONObject("total");
//      Integer confirm = total.getInteger("confirm");
//      Integer input = total.getInteger("input");
//      Integer severe = total.getInteger("severe");
//      Integer heal = total.getInteger("heal");
//      Integer dead = total.getInteger("dead");
//      Integer suspect = total.getInteger("suspect");
//      Area area = new Area();
//      area.setId(id);
//      area.setPid("-1");
//      area.setName(name);
//      area.setConfirm(confirm);
//      area.setInput(input);
//      area.setSevere(severe);
//      area.setHeal(heal);
//      area.setDead(dead);
//      area.setSuspect(suspect);
//      IndexQuery indexQuery = new IndexQuery();
//      indexQuery.setId(id.toString());
//      indexQuery.setObject(area);
//      indexQuery.setIndexName("area");
//      queries.add(indexQuery);
//
//    }
    Settings settings = Settings.builder().put("cluster.name", "docker-cluster").build();
    TransportClient transportClient = new PreBuiltTransportClient(settings);
    transportClient.addTransportAddress(new
        TransportAddress(InetAddress.getByName("localhost"), 9300));
    ElasticsearchTemplate elasticsearchTemplate = new ElasticsearchTemplate(
        transportClient);
//    boolean exists = elasticsearchTemplate.indexExists(Area.class);
//    System.out.println(exists);
//    if (exists) {
//      boolean deleteIndex = elasticsearchTemplate.deleteIndex(Area.class);
//      System.out.println(deleteIndex);
//    }
//    boolean index = elasticsearchTemplate.createIndex(Area.class);
//    System.out.println(index);
//    elasticsearchTemplate.bulkIndex(queries);
//    queries.clear();

    //mysql =
//    NativeSearchQueryBuilder nativeSearchQueryBuilder = new NativeSearchQueryBuilder();
//    nativeSearchQueryBuilder.withQuery(QueryBuilders.termQuery("name.keyword","中國"));
//    NativeSearchQuery searchQuery = nativeSearchQueryBuilder.build();
//    AggregatedPage<Area> areas = elasticsearchTemplate.queryForPage(searchQuery, Area.class);
//    System.out.println(areas.getContent());

    //mysql in
//    NativeSearchQueryBuilder nativeSearchQueryBuilder = new NativeSearchQueryBuilder();
//    nativeSearchQueryBuilder.withQuery(QueryBuilders.termsQuery("name.keyword", "美國", "日本本土"));
//    NativeSearchQuery searchQuery = nativeSearchQueryBuilder.build();
//    AggregatedPage<Area> areas = elasticsearchTemplate.queryForPage(searchQuery, Area.class);
//    System.out.println(areas.getContent());

    //mysql like
//    NativeSearchQueryBuilder nativeSearchQueryBuilder = new NativeSearchQueryBuilder();
//    nativeSearchQueryBuilder.withQuery(QueryBuilders.wildcardQuery("name.keyword", "*斯坦*"));
//    NativeSearchQuery searchQuery = nativeSearchQueryBuilder.build();
//    AggregatedPage<Area> areas = elasticsearchTemplate.queryForPage(searchQuery, Area.class);
//    System.out.println(areas.getContent());
    //mysql >10000
//    NativeSearchQueryBuilder nativeSearchQueryBuilder = new NativeSearchQueryBuilder();
//    nativeSearchQueryBuilder.withQuery(QueryBuilders.rangeQuery("confirm").from(1000000));
//    NativeSearchQuery searchQuery = nativeSearchQueryBuilder.build();
//    AggregatedPage<Area> areas = elasticsearchTemplate.queryForPage(searchQuery, Area.class);
//    System.out.println(areas.getContent());

    //mysql   between  1000 and 10000
//    NativeSearchQueryBuilder nativeSearchQueryBuilder = new NativeSearchQueryBuilder();
//    nativeSearchQueryBuilder.withQuery(QueryBuilders.rangeQuery("confirm").from(1000).to(10000));
//    NativeSearchQuery searchQuery = nativeSearchQueryBuilder.build();
//    AggregatedPage<Area> areas = elasticsearchTemplate.queryForPage(searchQuery, Area.class);
//    System.out.println(areas.getContent());

    //mysql   is null
//    NativeSearchQueryBuilder nativeSearchQueryBuilder = new NativeSearchQueryBuilder();
//    BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
//    ExistsQueryBuilder existsQueryBuilder = QueryBuilders.existsQuery("input");
//    boolQueryBuilder.mustNot(existsQueryBuilder);
//    nativeSearchQueryBuilder.withQuery(boolQueryBuilder);
//    NativeSearchQuery searchQuery = nativeSearchQueryBuilder.build();
//    AggregatedPage<Area> areas = elasticsearchTemplate.queryForPage(searchQuery, Area.class);
//    System.out.println(areas.getContent());

    //mysql   is not null
//    NativeSearchQueryBuilder nativeSearchQueryBuilder = new NativeSearchQueryBuilder();
//    BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
//    ExistsQueryBuilder existsQueryBuilder = QueryBuilders.existsQuery("input");
//    boolQueryBuilder.must(existsQueryBuilder);
//    nativeSearchQueryBuilder.withQuery(boolQueryBuilder);
//    NativeSearchQuery searchQuery = nativeSearchQueryBuilder.build();
//    AggregatedPage<Area> areas = elasticsearchTemplate.queryForPage(searchQuery, Area.class);
//    System.out.println(areas.getContent());

    //mysql   order by
//    NativeSearchQueryBuilder nativeSearchQueryBuilder = new NativeSearchQueryBuilder();
//    FieldSortBuilder sortBuilder = SortBuilders.fieldSort("confirm").order(SortOrder.DESC);
    FieldSortBuilder sortBuilder = SortBuilders.fieldSort("confirm").order(SortOrder.ASC);
//    nativeSearchQueryBuilder.withSort(sortBuilder);
//    NativeSearchQuery searchQuery = nativeSearchQueryBuilder.build();
//    AggregatedPage<Area> areas = elasticsearchTemplate.queryForPage(searchQuery, Area.class);
//    System.out.println(areas.getContent());

    //mysql   max min avg
//    NativeSearchQueryBuilder nativeSearchQueryBuilder = new NativeSearchQueryBuilder();
//    nativeSearchQueryBuilder.addAggregation(
//        AggregationBuilders.max("max_confirm").field("confirm").valueType(ValueType.LONG));
//    nativeSearchQueryBuilder.addAggregation(
//        AggregationBuilders.min("min_confirm").field("confirm").valueType(ValueType.LONG));
//    nativeSearchQueryBuilder.addAggregation(
//        AggregationBuilders.avg("avg_confirm").field("confirm").valueType(ValueType.LONG));
//    nativeSearchQueryBuilder.addAggregation(
//        AggregationBuilders.sum("sum_confirm").field("confirm").valueType(ValueType.LONG));
//    nativeSearchQueryBuilder.addAggregation(
//        AggregationBuilders.stats("stats_confirm").field("confirm").valueType(ValueType.LONG));
//    nativeSearchQueryBuilder.withFields("id");
//    NativeSearchQuery searchQuery = nativeSearchQueryBuilder.build();
//    AggregatedPage<Area> areas = elasticsearchTemplate.queryForPage(searchQuery, Area.class);
//    InternalMax maxConfirm = (InternalMax) areas.getAggregation("max_confirm");
//    InternalMin minConfirm = (InternalMin) areas.getAggregation("min_confirm");
//    InternalAvg avgConfirm = (InternalAvg) areas.getAggregation("avg_confirm");
//    InternalSum sumConfirm = (InternalSum) areas.getAggregation("sum_confirm");
//    InternalStats statsConfirm = (InternalStats) areas.getAggregation("stats_confirm");
//    System.out.println(BigDecimal.valueOf(maxConfirm.getValue()));
//    System.out.println(BigDecimal.valueOf(minConfirm.getValue()));
//    System.out.println(BigDecimal.valueOf(avgConfirm.getValue()).setScale(0, RoundingMode.HALF_UP));
//    System.out.println(BigDecimal.valueOf(sumConfirm.getValue()));
//    System.out.println("--------------------Stats---------------------------");
//    System.out.println(BigDecimal.valueOf(statsConfirm.getMax()));
//    System.out.println(BigDecimal.valueOf(statsConfirm.getMin()));
//    System.out.println(BigDecimal.valueOf(statsConfirm.getAvg()));
//    System.out.println(BigDecimal.valueOf(statsConfirm.getSum()));
//    System.out.println(BigDecimal.valueOf(statsConfirm.getCount()));
  }

}

@Data
@ToString
@Document(indexName = "area")
class Area {

  @Id
  private String id;
  private String pid;
  @Field(type = FieldType.Keyword)
  private String name;
  private Integer confirm;
  private Integer input;
  private Integer severe;
  private Integer heal;
  private Integer dead;
  private Integer suspect;
}

到了這里,關(guān)于ES-1:Java的 ElasticsearchTemplate Or ElasticsearchRepository基礎(chǔ)常用查詢寫法的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • ES常用命令與常用查詢(1)

    查看集群狀態(tài) 創(chuàng)建索引 查看所有索引 查看索引信息 刪除索引 2.1 查詢所有 match_all 使用match_all,默認(rèn)只會返回10條數(shù)據(jù) 返回指定條數(shù) size 不能無限大,如果過大會出現(xiàn)異常 1、查詢結(jié)果的窗口太大,from + size的結(jié)果必須小于或等于10000,而當(dāng)前查詢結(jié)果的窗 口為20000。 2、可以

    2024年02月06日
    瀏覽(19)
  • ES查詢常用語法

    目錄 1. ElasticSearch之查詢返回結(jié)果各字段含義 2. match 查詢 3. term查詢 4. terms 查詢 5. range 范圍 6. 布爾查詢 6.1 filter加快查詢效率的原因 7. boosting query(提高查詢) 8. dis_max(最佳匹配查詢) 9. 分頁 10. 聚合查詢【內(nèi)含實(shí)際的demo】 執(zhí)行命令:索引庫名稱/_search 空搜索的結(jié)果為: 按照

    2023年04月09日
    瀏覽(24)
  • 【ES常用查詢】基于ElasticsearchRestTemplate及NativeSearchQuery的查詢

    包含當(dāng)前es所有的查詢, 需要什么代碼直接照搬,改個參數(shù)就行! 用的好請務(wù)必給我點(diǎn)贊?。?!感謝愛你們!?。?為啥寫這篇文章呢: 大概是因?yàn)槟壳肮居玫腶pi跟以前的不太一樣, 以前我們是基于高標(biāo)準(zhǔn)客戶端直接做的, 但是目前這邊同事是基于ElasticsearchRestTemplate跟

    2024年02月03日
    瀏覽(17)
  • ES學(xué)習(xí)-常用的查詢接口

    我們有大部分?jǐn)?shù)據(jù)要通過es進(jìn)行查詢,上周在查的時候發(fā)現(xiàn)有些不會,今天有空琢磨了一下 常用的查詢接口整理成collection了,附在鏈接里哈哈哈哈哈哈哈 鏈接: ? https://pan.baidu.com/s/1RSFvgbNALPmItW9unvb7Dg?pwd=qwer? ?提取碼: qwer 復(fù)制這段內(nèi)容后打開百度網(wǎng)盤手機(jī)App,操作更方便哦

    2024年02月09日
    瀏覽(23)
  • 工作常用ES DSL查詢語句(干貨滿滿)

    工作常用ES DSL查詢語句(干貨滿滿)

    ?? 工作中幾乎每天都需要使用到ES查詢數(shù)據(jù),需要根據(jù)自己的查詢需求構(gòu)造DSL查詢語句來實(shí)現(xiàn),本文記錄并分享本人工作中常用的DSL語句以及所遇到問題的解決方案,DSL語句靈活多變,可進(jìn)行多種組合,任你搭配,讓我們一起往下看,希望對你有幫助。 2.1 查看所有索引的

    2024年02月02日
    瀏覽(25)
  • ES7 and or 關(guān)聯(lián)條件查詢JAVA

    @ES7 and or 關(guān)聯(lián)條件查詢JAVA 實(shí)現(xiàn)條件( platform=‘xxx’ and (home_path=‘xxx’ or nick_name=‘xxx’ )) kibana

    2024年02月08日
    瀏覽(22)
  • DB SQL 轉(zhuǎn) ES DSL(支持多種數(shù)據(jù)庫常用查詢、統(tǒng)計、平均值、最大值、最小值、求和語法)...

    DB SQL 轉(zhuǎn) ES DSL(支持多種數(shù)據(jù)庫常用查詢、統(tǒng)計、平均值、最大值、最小值、求和語法)...

    1. 簡介 ??日常開發(fā)中需要查詢 Elasticsearch 中的數(shù)據(jù)時,一般會采用 RestHighLevelClient 高級客戶端封裝的API。項(xiàng)目中一般采用一種或多種關(guān)系型數(shù)據(jù)庫(如: Mysql 、 PostgreSQL 、 Oracle 等) + NoSQL(如: Elasticsearch )存儲方案;不同關(guān)系數(shù)據(jù)庫可以采用 Mybatis-Plus 方案屏蔽數(shù)據(jù)庫的方言

    2024年01月17日
    瀏覽(22)
  • Windows取證——路由查詢常用命令和域操作基礎(chǔ)命令

    tracert IP??????????????????????????????????????? 路由跟蹤 route print?????????????????????????????????????? 打印路由表 arp -a??????????????????????????????????????????? 列出本網(wǎng)段內(nèi)所有活躍的IP地址 arp -s (ip + mac)

    2024年02月13日
    瀏覽(27)
  • Elasticsearch8常用查詢api,java ElasticsearchClient寫法和原生Rest DSL寫法

    Java Client Rest Api Java Client Rest Api Java Client Rest Api Java Client Rest Api ? 用來匹配任意字符, * 用來匹配零個或者多個字符。 Java Client Rest Api Java Client Rest Api Java Client Java Client Rest Api

    2024年02月08日
    瀏覽(24)
  • 【ElasticSearch】ElasticSearch Java API的使用——常用索引、文檔、查詢操作(二)

    Elaticsearch ,簡稱為es,es是一個開源的 高擴(kuò)展 的 分布式全文檢索引擎 ,它可以近乎 實(shí)時的存儲 、 檢索數(shù)據(jù); 本身擴(kuò)展性很好,可以擴(kuò)展到上百臺服務(wù)器,處理PB級別(大數(shù)據(jù)時代)的數(shù)據(jù)。es也使用java開發(fā)并使用Lucene作為其核心來實(shí)現(xiàn)所有索引和搜索的功能,但是它的 目的

    2024年01月16日
    瀏覽(124)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包