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

Elasticsearch8常用查詢api,java ElasticsearchClient寫法和原生Rest DSL寫法

這篇具有很好參考價(jià)值的文章主要介紹了Elasticsearch8常用查詢api,java ElasticsearchClient寫法和原生Rest DSL寫法。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

0、前置條件

0.1、ES查詢結(jié)果轉(zhuǎn)換

    /**
     * 查詢結(jié)果轉(zhuǎn)換
     *
     * @param searchResponse 返回結(jié)果
     * @return List<Object>
     */
    public static List<Map<String, Object>> searchResponse2List(SearchResponse<ObjectNode> searchResponse) {

        if (searchResponse == null) {return new ArrayList<>(0);}
        if (searchResponse.hits() == null) {return new ArrayList<>(0);}
        if (CommonUtils.isCollectionEmpty(searchResponse.hits().hits())) {return new ArrayList<>(0);}

        List<Hit<ObjectNode>> hits = searchResponse.hits().hits();

        List<Map<String, Object>> list = new ArrayList<>(hits.size());
        for (Hit<ObjectNode> hit : hits) {
            ObjectNode node = hit.source();
            Map<String, Object> map = this.objectNode2Map(node);
            list.add(map);
        }
        return list;
    }

    /**
     * objectNode轉(zhuǎn)Map
     *
     * @return Map<String, Object>
     */
    public static Map<String, Object> objectNode2Map(ObjectNode objectNode) {
        if (null == objectNode) {return new HashMap<>(0);}
        if (objectNode.isEmpty()) {return new HashMap<>(0);}
        ObjectMapper objectMapper = new ObjectMapper();
        return objectMapper.convertValue(objectNode, new TypeReference<Map<String, Object>>() {
        });
    }

0.3、查詢請(qǐng)求

SearchRequest.Builder searchRequest = new SearchRequest.Builder();
searchRequest.query(q -> q.bool(b -> b.must(${query})));

SearchResponse<ObjectNode> response;
response = client.search(searchRequest.trackTotalHits(t->t.enabled(true)).build(), ObjectNode.class);

1、類型

1.1、 matchAll

Java Client

 searchRequest.query(q -> q.matchAll(m -> m));

Rest Api

{
 "query": {
  "match_all": {}
 }
}   

1.2、 match

Java Client

Query query =
        Query.of(q -> q.
                match(m -> m
                        .field(${field})
                        .query(FieldValue.of(${value}))
                )
        );

Rest Api

{
 "query": {
  "match": {
   "message": {
    "query": "this is a test"
   }
  }
 }
}

1.2、 terms 詞查詢,多個(gè)值

Java Client

List<FieldValue> terms = new ArrayList<>();
terms.add(FieldValue.of(${value1}));
terms.add(FieldValue.of(${value2}));

Query query =
        Query.of(q -> q.
                terms(t -> t
                        .field(${field})
                        .terms(tt -> tt.value(terms))
                )
        );

Rest Api

{
  "query": {
    "terms": {
      "${field}": [ "${value1}", "${value2}" ],
      "boost": 1.0
    }
  }
}

1.3、 range 范圍

Java Client

Query query =
        Query.of(q -> q
                .range(r -> {
                            r.field(${field});
                            if (${true}) {
                                r.gte(${value1});
                            } else {
                                r.gt(${value1});
                            }
                            if (${true}) {
                                r.lte(${value2});
                            } else {
                                r.lt(${value2});
                            }
                            return r;
                        }
                )
        );

Rest Api

{
  "query": {
    "range": {
      "age": {
        "gte": 10,
        "lte": 20,
        "boost": 2.0
      }
    }
  }
}

1.4、 wildcard 通配符

  • ?用來(lái)匹配任意字符,
  • *用來(lái)匹配零個(gè)或者多個(gè)字符。

Java Client

//?用來(lái)匹配任意字符,*用來(lái)匹配零個(gè)或者多個(gè)字符。
String value = condition.getValue().replace("_", "?");
value = value.replace("%", "*");

String finalValue = value;
Query query =
        Query.of(q -> q
                .wildcard(t -> t
                        .field(${field})
                        .value(${finalValue})
                )
        );

Rest Api

{
  "query": {
    "wildcard": {
      "${field}": {
        "value": "${value}",
        "boost": 1.0,
        "rewrite": "constant_score"
      }
    }
  }
}

1.5、 prefix 前綴

Java Client

Query query =
        Query.of(q -> q
                .prefix(t -> t
                        .field(${field})
                        .value(${value})
                )
        );

Rest Api

{
  "query": {
    "prefix": {
      "${field}": {
        "value": "${value}"
      }
    }
  }
}

1.6、 geo_distance 地理距離查詢

Java Client

        Query query =
                Query.of(q -> q
                        .geoDistance(t -> t
                                .field(${field})
                                .location(l -> l
                                        .latlon(ll -> ll
                                                .lat(${lat})
                                                .lon(${lon})
                                        )
                                )
                                .distance(String.valueOf(${distance}))
                        )
                );
{
  "query": {
    "bool": {
      "must": {
        "match_all": {}
      },
      "filter": {
        "geo_distance": {
          "distance": "200km",
          "pin.location": {
            "lat": 40,
            "lon": -70
          }
        }
      }
    }
  }
}

1.5、 regexp 正則

Java Client

Query query =
        Query.of(q -> q
                .regexp(t -> t
                        .field(${field})
                        .value(${value})
                )
        );

Rest Api文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-472580.html

{
  "query": {
    "regexp": {
      "user.id": {
        "value": "k.*y",
        "flags": "ALL",
        "case_insensitive": true,
        "max_determinized_states": 10000,
        "rewrite": "constant_score"
      }
    }
  }
}

到了這里,關(guān)于Elasticsearch8常用查詢api,java ElasticsearchClient寫法和原生Rest DSL寫法的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • Springboot 整合ElasticSearch 常用的插入查詢,模糊查詢,范圍查詢

    Springboot 整合ElasticSearch 常用的插入查詢,模糊查詢,范圍查詢

    repository.deleteById(id); } catch (Exception ex) { ex.printStackTrace(); return false; } return true; } public Dog saveDog(Dog dog) { try { Dog save = repository.save(dog); System.out.println(“結(jié)果:”+save.toString()); return save; } catch (Exception ex) { ex.printStackTrace(); return null; } } public Boolean saveDogAll(List dogsList) { try { reposit

    2024年04月22日
    瀏覽(22)
  • elasticsearch的常用查詢語(yǔ)法(大全)

    參考文章網(wǎng)址:https://www.cnblogs.com/xiohao/p/12970224.html es查詢 修改時(shí),不指定的屬性會(huì)自動(dòng)覆蓋,只保留指定的屬性(不正確的修改指定文檔方式) 使用POST命令,在id后面跟_update,要修改的內(nèi)容放到doc文檔(屬性)中(正確的修改指定文檔方式) 準(zhǔn)備數(shù)據(jù) 查詢語(yǔ)句 輸出結(jié)果 通過(guò)觀察

    2024年02月05日
    瀏覽(20)
  • 常用的Elasticsearch查詢DSL

    1.基本查詢 2.多條件查詢 3.范圍查詢 4.復(fù)雜查詢 5.聚合查詢

    2024年02月12日
    瀏覽(27)
  • ElasticSearch常用查詢命令查看基本信息

    查看es的集群狀態(tài) http://IP:9200/_cat/healthv 注: IP指es集群某個(gè)ip地址, v表示格式化輸出 查看es集群節(jié)點(diǎn)列表 http://IP:9200/_cat/nodesv 查看es集群所有索引及數(shù)據(jù)大小 http://IP:9200/_cat/indicesv 查看單個(gè)索引結(jié)構(gòu)信息 http://IP:9200/indexNamepretty=true 注: indexName是索引名字, pretty=true表示格式化輸出

    2024年02月03日
    瀏覽(24)
  • Elasticsearch常用查詢語(yǔ)法及RestClient操作

    Elasticsearch常用查詢語(yǔ)法及RestClient操作

    match查詢 :全文檢索查詢的一種,會(huì)對(duì)用戶內(nèi)容分詞,然后去倒排索引庫(kù)檢索,語(yǔ)法。 multi_match :和match類似,但是它允許多個(gè)字段進(jìn)行查詢 解釋:在 hotel索引庫(kù) 中按照 address 和 name 兩個(gè)字段搜索值 包含北京 的文檔 精準(zhǔn)查詢一般是查找keyword,數(shù)值,日期,boolean等 不可分

    2024年04月25日
    瀏覽(25)
  • 【微服務(wù)】Elasticsearch常用查詢&結(jié)果處理(三)

    【微服務(wù)】Elasticsearch常用查詢&結(jié)果處理(三)

    ??Es學(xué)習(xí)·第三站~ ??Es學(xué)習(xí)起始站:【微服務(wù)】Elasticsearch概述環(huán)境搭建(一) ??本文已收錄至專欄:微服務(wù)探索之旅 ??希望您能有所收獲 在上一站的學(xué)習(xí)中,我們已經(jīng)導(dǎo)入了大量數(shù)據(jù)到es中,實(shí)現(xiàn)了數(shù)據(jù)存儲(chǔ)功能。接下來(lái)如需看自己實(shí)操效果請(qǐng)根據(jù)上一站的 三.環(huán)境搭建 部

    2024年02月04日
    瀏覽(21)
  • Elasticsearch 常用的增加、刪除、修改、查詢語(yǔ)句

    新增 刪除 修改 批量增刪改 查詢 查詢指定索引下全部數(shù)據(jù) 查詢指定索引下指定id的數(shù)據(jù) 查詢指定索引下全部數(shù)據(jù) 查詢指定值(match) 在多個(gè)字段中查詢指定值(multi_match) match、multi_match是模糊匹配,匹配時(shí)會(huì)對(duì)所查找的進(jìn)行分詞,然后按分詞匹配查找。 term 查詢

    2024年02月03日
    瀏覽(32)
  • Elasticsearch8.x版本中RestHighLevelClient被棄用,新版本中全新的Java客戶端Elasticsearch Java API Client中常用API練習(xí)

    在Es7.15版本之后,es官方將它的高級(jí)客戶端RestHighLevelClient標(biāo)記為棄用狀態(tài)。同時(shí)推出了全新的java API客戶端Elasticsearch Java API Client,該客戶端也將在Elasticsearch8.0及以后版本中成為官方推薦使用的客戶端。 Elasticsearch Java API Client支持除Vector title search API和Find structure API之外的所有

    2023年04月08日
    瀏覽(25)
  • Elasticsearch基礎(chǔ)學(xué)習(xí)-常用查詢和基本的JavaAPI操作ES

    Elasticsearch基礎(chǔ)學(xué)習(xí)-常用查詢和基本的JavaAPI操作ES

    Elasticsearch是一個(gè)基于 lucene 、分布式、通過(guò)Restful方式進(jìn)行交互的 近實(shí)時(shí)搜索 平臺(tái)框架。 ELK技術(shù)棧是Elasticsearch、Logstash、Kibana三大開元框架首字母大寫簡(jiǎn)稱。 而Elasticsearch 是一個(gè) 開源的高擴(kuò)展的分布式全文搜索引擎 , 是整個(gè) ELK技術(shù)棧的核心。 Elasticsearch是一個(gè)基于lucene、分

    2024年02月11日
    瀏覽(20)
  • 手機(jī)通訊類、ip查詢、智能核驗(yàn)、生活常用API接口推薦

    手機(jī)號(hào)碼歸屬地:提供三大運(yùn)營(yíng)商的手機(jī)號(hào)碼歸屬地查詢。 空號(hào)檢測(cè):通過(guò)手機(jī)號(hào)碼查詢其在網(wǎng)活躍度,返回包括空號(hào)、停機(jī)等狀態(tài)。 手機(jī)在網(wǎng)狀態(tài):支持傳入三大運(yùn)營(yíng)商的號(hào)碼,查詢手機(jī)號(hào)在網(wǎng)狀態(tài),返回在網(wǎng)等多種狀態(tài)。 短信驗(yàn)證碼:支持三大運(yùn)營(yíng)商,支持大容量高并

    2024年02月05日
    瀏覽(22)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包