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

ElasticSearch系列 - SpringBoot整合ES之全文搜索匹配查詢 match

這篇具有很好參考價(jià)值的文章主要介紹了ElasticSearch系列 - SpringBoot整合ES之全文搜索匹配查詢 match。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。


官方文檔地址:https://www.elastic.co/guide/en/elasticsearch/reference/index.html
權(quán)威指南:https://www.elastic.co/guide/cn/elasticsearch/guide/current/structured-search.html

1. 數(shù)據(jù)準(zhǔn)備

官方測(cè)試數(shù)據(jù)下載地址:https://download.elastic.co/demos/kibana/gettingstarted/accounts.zip ,數(shù)據(jù)量很大,我們自己構(gòu)造數(shù)據(jù)吧。

PUT /user/_doc/1
{
    "first_name" : "John",
    "last_name" :  "Smith",
    "age" :        25,
    "about" :      "I love to go rock climbing",
    "interests": [ "sports"]
}

PUT /user/_doc/2
{
    "first_name" : "zhangsan",
    "last_name" :  "Smith",
    "age" :        19,
    "about" :      "我是一個(gè)安靜的人",
    "interests": [ "read" ]
}

PUT /user/_doc/3
{
    "first_name" : "lisi",
    "last_name" :  "Alice",
    "age" :        29,
    "about" :      "我喜歡規(guī)劃自己的生活",
    "interests": [ "sports", "read","music" ]
}

2. match 匹配查詢

在匹配之前分析提供的文本,返回與提供的文本、數(shù)字、日期或布爾值匹配的文檔。 該match查詢是執(zhí)行全文搜索的標(biāo)準(zhǔn)查詢,包括模糊匹配選項(xiàng)。

1. 全文檢索

① 底層分詞器會(huì)對(duì)查詢文本分詞,匹配about字段中含有g(shù)o或者含有rock的文檔:

GET /user/_search
{
    "query": {
        "match" : {
            "about" : {
                "query" : "go rock"
            }
        }
    }
}

② 對(duì)應(yīng)的Java調(diào)用:

@Slf4j
@Service
public class ElasticSearchImpl {

    @Autowired
    private RestHighLevelClient restHighLevelClient;

    public void searchUser() throws IOException {
        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
        MatchQueryBuilder matchQueryBuilder = new MatchQueryBuilder("about","go rock");
        searchSourceBuilder.query(matchQueryBuilder);

        SearchRequest searchRequest = new SearchRequest(new String[]{"user"},searchSourceBuilder);
        SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
        System.out.println(searchResponse);
    }
}

③ 查詢的結(jié)果:

{
  "took" : 4,
  "timed_out" : false,
  "_shards" : {
    "total" : 7,
    "successful" : 7,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 1,
      "relation" : "eq"
    },
    "max_score" : 1.464436,
    "hits" : [
      {
        "_index" : "user",
        "_type" : "_doc",
        "_id" : "1",
        "_score" : 1.464436,
        "_source" : {
          "first_name" : "John",
          "last_name" : "Smith",
          "age" : 25,
          "about" : "I love to go rock climbing",
          "interests" : [
            "sports"
          ]
        }
      }
    ]
  }
}
2. 簡(jiǎn)化查詢DSL語(yǔ)句
GET /user/_search
{
    "query": {
        "match" : {
            "about" : {
                "query" : "我是一個(gè)"
            }
        }
    }
}

可以簡(jiǎn)化查詢?yōu)椋?/p>

GET /user/_search
{
    "query": {
        "match" : {
            "about" : "我是一個(gè)"
        }
    }
}
{
  "took" : 25,
  "timed_out" : false,
  "_shards" : {
    "total" : 7,
    "successful" : 7,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 2,
      "relation" : "eq"
    },
    "max_score" : 2.8478274,
    "hits" : [
      {
        "_index" : "user",
        "_type" : "_doc",
        "_id" : "2",
        "_score" : 2.8478274,
        "_source" : {
          "first_name" : "zhangsan",
          "last_name" : "Smith",
          "age" : 19,
          "about" : "我是一個(gè)安靜的人",
          "interests" : [
            "read"
          ]
        }
      },
      {
        "_index" : "user",
        "_type" : "_doc",
        "_id" : "3",
        "_score" : 0.6810339,
        "_source" : {
          "first_name" : "lisi",
          "last_name" : "Alice",
          "age" : 29,
          "about" : "我喜歡規(guī)劃自己的生活",
          "interests" : [
            "sports",
            "read",
            "music"
          ]
        }
      }
    ]
  }
}

3. match 匹配查詢?cè)?/h4>

查詢match的類型為boolean。這意味著對(duì)提供的文本進(jìn)行了分析,分析過(guò)程根據(jù)提供的文本構(gòu)造了一個(gè)布爾查詢。該operator參數(shù)可以設(shè)置為orand 來(lái)控制布爾子句(默認(rèn)為or),如果為and代表所有字段都要匹配,如果為or代表匹配分詞后的任何一個(gè)詞。

① 帶有operator參數(shù)and搜索條件,匹配的文檔需要包含文本的所有分詞,少一個(gè)都不行:

GET /user/_search
{
    "query": {
        "match" : {
            "about" : {
                "query" : "是一安靜個(gè)我",
                "operator" : "and"
            }
        }
    }
}
@Slf4j
@Service
public class ElasticSearchImpl {

    @Autowired
    private RestHighLevelClient restHighLevelClient;

    public void searchUser() throws IOException {
        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
        MatchQueryBuilder matchQueryBuilder = new MatchQueryBuilder("about","是一安靜個(gè)我");
        // 設(shè)置Operator參數(shù)
        matchQueryBuilder.operator(Operator.AND);
        searchSourceBuilder.query(matchQueryBuilder);

        SearchRequest searchRequest = new SearchRequest(new String[]{"user"},searchSourceBuilder);
        SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
        System.out.println(searchResponse);
    }
}
{
  "took" : 2,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 1,
      "relation" : "eq"
    },
    "max_score" : 2.8478274,
    "hits" : [
      {
        "_index" : "user",
        "_type" : "_doc",
        "_id" : "2",
        "_score" : 2.8478274,
        "_source" : {
          "first_name" : "zhangsan",
          "last_name" : "Smith",
          "age" : 19,
          "about" : "我是一個(gè)安靜的人",
          "interests" : [
            "read"
          ]
        }
      }
    ]
  }
}

② 帶有operator參數(shù)or搜索條件,匹配的文檔需要包含文本的任意一個(gè)分詞:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-403747.html

GET /user/_search
{
    "query": {
        "match" : {
            "about" : "是一個(gè)我"
        }
    }
}
@Slf4j
@Service
public class ElasticSearchImpl {

    @Autowired
    private RestHighLevelClient restHighLevelClient;

    public void searchUser() throws IOException {
        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
        MatchQueryBuilder matchQueryBuilder = new MatchQueryBuilder("about","是一個(gè)我");
        // 設(shè)置Operator參數(shù)
        matchQueryBuilder.operator(Operator.OR);
        searchSourceBuilder.query(matchQueryBuilder);

        SearchRequest searchRequest = new SearchRequest(new String[]{"user"},searchSourceBuilder);
        SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
        System.out.println(searchResponse);
    }
}
{
  "took" : 29,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 2,
      "relation" : "eq"
    },
    "max_score" : 2.8478274,
    "hits" : [
      {
        "_index" : "user",
        "_type" : "_doc",
        "_id" : "2",
        "_score" : 2.8478274,
        "_source" : {
          "first_name" : "zhangsan",
          "last_name" : "Smith",
          "age" : 19,
          "about" : "我是一個(gè)安靜的人",
          "interests" : [
            "read"
          ]
        }
      },
      {
        "_index" : "user",
        "_type" : "_doc",
        "_id" : "3",
        "_score" : 0.6810339,
        "_source" : {
          "first_name" : "lisi",
          "last_name" : "Alice",
          "age" : 29,
          "about" : "我喜歡規(guī)劃自己的生活",
          "interests" : [
            "sports",
            "read",
            "music"
          ]
        }
      }
    ]
  }
}

到了這里,關(guān)于ElasticSearch系列 - SpringBoot整合ES之全文搜索匹配查詢 match的文章就介紹完了。如果您還想了解更多內(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)文章

  • ElasticSearch系列 - SpringBoot整合ES:實(shí)現(xiàn)分頁(yè)搜索 from+size、search after、scroll

    01. 數(shù)據(jù)準(zhǔn)備 ElasticSearch 向 my_index 索引中索引了 12 條文檔: 02. ElasticSearch 如何查詢所有文檔? ElasticSearch 查詢所有文檔 根據(jù)查詢結(jié)果可以看出,集群中總共有12個(gè)文檔,hits.total.value=12, 但是在 hits 數(shù)組中只有 10 個(gè)文檔。如何才能看到其他的文檔? 03. ElasticSearch 如何指定搜

    2023年04月08日
    瀏覽(28)
  • 18、全文檢索--Elasticsearch-- SpringBoot 整合 Spring Data Elasticsearch(異步方式(Reactive)和 傳統(tǒng)同步方式 分別操作ES的代碼演示)

    18、全文檢索--Elasticsearch-- SpringBoot 整合 Spring Data Elasticsearch(異步方式(Reactive)和 傳統(tǒng)同步方式 分別操作ES的代碼演示)

    啟動(dòng)命令行窗口,執(zhí)行:elasticsearch 命令即可啟動(dòng) Elasticsearch 服務(wù)器 三種查詢方式解釋: 方法名查詢: 就是全自動(dòng)查詢,只要按照規(guī)則來(lái)定義查詢方法 ,Spring Data Elasticsearch 就會(huì)幫我們生成對(duì)應(yīng)的查詢語(yǔ)句,并且生成方法體。 @Query 查詢 : 就是半自動(dòng)查詢, 按照 S

    2024年03月12日
    瀏覽(22)
  • Elasticsearch(十四)搜索---搜索匹配功能⑤--全文搜索

    Elasticsearch(十四)搜索---搜索匹配功能⑤--全文搜索

    不同于之前的term。terms等結(jié)構(gòu)化查詢,全文搜索首先對(duì)查詢?cè)~進(jìn)行分析,然后根據(jù)查詢?cè)~的分詞結(jié)果構(gòu)建查詢。這里所說(shuō)的全文指的是文本類型數(shù)據(jù)(text類型),默認(rèn)的數(shù)據(jù)形式是人類的自然語(yǔ)言,如對(duì)話內(nèi)容、圖書名稱、商品介紹和酒店名稱等。結(jié)構(gòu)化搜索關(guān)注的是數(shù)據(jù)是

    2024年02月11日
    瀏覽(21)
  • Elasticsearch的全文搜索與匹配

    Elasticsearch是一個(gè)開源的搜索和分析引擎,基于Lucene庫(kù),用于實(shí)現(xiàn)全文搜索和實(shí)時(shí)分析。它具有高性能、高可擴(kuò)展性和高可用性,適用于大規(guī)模數(shù)據(jù)的搜索和分析。Elasticsearch的核心功能包括文檔存儲(chǔ)、搜索引擎、分析引擎和數(shù)據(jù)可視化。 Elasticsearch的全文搜索功能是其最重要的

    2024年02月22日
    瀏覽(28)
  • 【Elasticsearch】SpringBoot整合ES實(shí)現(xiàn)搜索功能 | 高亮顯示

    【Elasticsearch】SpringBoot整合ES實(shí)現(xiàn)搜索功能 | 高亮顯示

    先看代碼: controller: serviceImpl: 小結(jié) : 1、添加ES場(chǎng)景啟動(dòng)器 2、yaml配置ES 3、準(zhǔn)備需要用到的變量 注:還有一個(gè)注入的RestHighLevelClient 結(jié)構(gòu)如下: 具體調(diào)用的方法以及設(shè)置頁(yè)碼等參看代碼。 加斷點(diǎn)查看對(duì)應(yīng)searchResponse數(shù)據(jù)結(jié)構(gòu): HighlightFields的數(shù)據(jù)結(jié)構(gòu): 對(duì)照kinaba結(jié)果: 3、根

    2024年02月11日
    瀏覽(26)
  • ElasticSearch系列 - SpringBoot整合ES:ElasticSearch分析器

    1. ElasticSearch match 文本搜索的過(guò)程? Elasticsearch 的 match 查詢是一種基于文本匹配的查詢方式,它的搜索過(guò)程如下: ① 將查詢字符串分詞:Elasticsearch 會(huì)將查詢字符串分成一個(gè)個(gè)詞項(xiàng)(term),并去除停用詞(如“的”、“是”等常用詞匯)和標(biāo)點(diǎn)符號(hào)等無(wú)意義的字符。 ② 構(gòu)建

    2023年04月18日
    瀏覽(25)
  • 搜索引擎ElasticSearch分布式搜索和分析引擎學(xué)習(xí),SpringBoot整合ES個(gè)人心得

    搜索引擎ElasticSearch分布式搜索和分析引擎學(xué)習(xí),SpringBoot整合ES個(gè)人心得

    Elasticsearch是一個(gè)基于Lucene的搜索服務(wù)器。它提供了一個(gè)分布式多用戶能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java語(yǔ)言開發(fā)的,并作為Apache許可條款下的開放源碼發(fā)布,是一種流行的企業(yè)級(jí)搜索引擎。Elasticsearch用于云計(jì)算中,能夠達(dá)到實(shí)時(shí)搜索,穩(wěn)定,可靠,

    2024年02月04日
    瀏覽(35)
  • ElasticSearch系列 - SpringBoot整合ES:分析器

    1. ElasticSearch match 文本搜索的過(guò)程? Elasticsearch 的 match 查詢是一種基于文本匹配的查詢方式,它的搜索過(guò)程如下: ① 將查詢字符串分詞:Elasticsearch 會(huì)將查詢字符串分成一個(gè)個(gè)詞項(xiàng)(term),并去除停用詞(如“的”、“是”等常用詞匯)和標(biāo)點(diǎn)符號(hào)等無(wú)意義的字符。 ② 構(gòu)建

    2024年02月06日
    瀏覽(24)
  • ElasticSearch系列 - SpringBoot整合ES:多個(gè)精確值查詢 terms

    ElasticSearch - SpringBoot整合ES:多個(gè)精確值查詢 terms 01. ElasticSearch terms 查詢支持的數(shù)據(jù)類型 在Elasticsearch中,terms查詢支持多種數(shù)據(jù)類型,包括: 字符串類型:可以將多個(gè)字符串值作為數(shù)組傳遞給terms查詢,以匹配包含任何一個(gè)指定字符串值的文檔。 數(shù)值類型:可以將多個(gè)數(shù)值作

    2024年02月16日
    瀏覽(28)
  • ElasticSearch系列 - SpringBoot整合ES:組合多個(gè)查詢條件 bool 查詢

    01. ElasticSearch 布爾查詢是什么? 在實(shí)際應(yīng)用中,我們很有可能會(huì)查詢多個(gè)值或字段。 一個(gè) bool 查詢由三部分組成: must:所有的語(yǔ)句都必須(must) 匹配,與 AND 等價(jià)。 must_not:所有的語(yǔ)句都不能(must not)匹配,與 NOT 等價(jià)。 should:至少有一個(gè)語(yǔ)句要匹配,與 OR 等價(jià)。 02.

    2023年04月08日
    瀏覽(27)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包