黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國(guó)咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學(xué)習(xí)攻略 Java學(xué)習(xí) Java中ElasticSearch模糊查詢的示例

Java中ElasticSearch模糊查詢的示例

更新時(shí)間:2022-12-08 11:29:13 來源:動(dòng)力節(jié)點(diǎn) 瀏覽2377次

ElasticSearch 模糊查詢可用于用戶使用錯(cuò)誤輸入的關(guān)鍵字或拼寫錯(cuò)誤進(jìn)行搜索的場(chǎng)景。或者,它也可以用于基于Levenshtein Edit Distance搜索相似詞,Levenshtein Edit Distance可以定義為將一個(gè)詞更改為另一個(gè)詞所需的最小單字符編輯(插入、刪除或替換)次數(shù)。

在這篇文章中,演示了使用ElasticSearch Java API的模糊搜索。包括以下幾點(diǎn):

使用 ElasticSearch 和 Kibana 進(jìn)行設(shè)置

ElasticSearch 庫 POM 條目

使用 Fuzzy Query API 進(jìn)行模糊搜索

使用 Match Query API 進(jìn)行模糊搜索

使用布爾查詢 API 進(jìn)行模糊搜索

使用 ElasticSearch 和 Kibana 進(jìn)行設(shè)置

首先,設(shè)置 ElasticSearch 和 Kibana。

ElasticSearch 庫 POM 條目

創(chuàng)建 Java Maven 項(xiàng)目。將以下內(nèi)容放入 pom.xml 文件中以使用 ElasticSearch Java API:

<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>transport</artifactId>
    <version>6.2.2</version>
</dependency>
<dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20180130</version>
</dependency>

使用模糊查詢 API 進(jìn)行模糊搜索

使用模糊查詢搜索索引需要注意以下幾點(diǎn):

創(chuàng)建一個(gè) TransportClient 的實(shí)例

使用 fuzzyQuery API 創(chuàng)建 QueryBuilder 實(shí)例

創(chuàng)建用于創(chuàng)建請(qǐng)求對(duì)象的 SearchRequestBuilder 實(shí)例

在 SearchRequestBuilder 實(shí)例上調(diào)用 Get API

遍歷搜索結(jié)果

public class App { 
    private static final String INDEX_NAME = "recruitment";
    private static final String INDEX_TYPE = "interviews"; 
    public static void main(String[] args) throws IOException {
        //
        // Create an instance of TransportClient
        //
        TransportClient client = = new PreBuiltTransportClient(Settings.EMPTY)
                .addTransportAddress(new TransportAddress(InetAddress.getByName("127.0.0.1"), 9300));
        //
        // Create a query builder using fuzzyQuery Method
        // Name of the key to search: name
        // Value to search: "vitalflux"
        //
        QueryBuilder queryBuilder = QueryBuilders.fuzzyQuery(name, "vitalflux").boost(1.0f).prefixLength(0).fuzziness(Fuzziness.ONE).transpositions(true);
        //
        // Create an instance of SearchRequestBuilder
        //
        SearchRequestBuilder requestBuilder = client.prepareSearch(INDEX_NAME).setTypes(INDEX_TYPE)
                .setQuery(queryBuilder).setSize(100);
        //
        // Get the search result
        //
        SearchResponse response = requestBuilder.get();
        //
        // Iterate through search results
        //
        SearchHit[] srchHits = response.getHits().getHits();
        String[] result = new String[srchHits.length];
        int i = 0;
        for (SearchHit srchHit : srchHits) {
            result[i++] = (String) srchHit.getSourceAsMap().get(KEY_NAME);
        }
    }
}

使用匹配查詢 API 進(jìn)行模糊搜索

以下代碼可用于使用 Match Query API 構(gòu)建 QueryBuilder 實(shí)例,該 API 稍后用于構(gòu)建 SearchRequestBuilder 實(shí)例。其余代碼與上面的代碼相同。

QueryBuilder queryBuilder = QueryBuilders.matchQuery("name", "vitalflux").fuzziness(Fuzziness.ONE).boost(1.0f).prefixLength(0).fuzzyTranspositions(true);
//
// Create an instance of SearchRequestBuilder
//
SearchRequestBuilder requestBuilder = client.prepareSearch(INDEX_NAME).setTypes(INDEX_TYPE).setQuery(queryBuilder).setSize(100);
//
// Get the search result
//
SearchResponse response = requestBuilder.get();

使用布爾查詢 API 進(jìn)行模糊搜索

以下代碼可用于使用 Bool Query API 構(gòu)建 QueryBuilder 實(shí)例,稍后用于構(gòu)建 SearchRequestBuilder 實(shí)例。其余代碼與上面的代碼相同。

QueryBuilder queryBuilder = QueryBuilders.matchQuery(KEY_NAME, refNumber).fuzziness(editDistance).boost(1.0f).prefixLength(0).fuzzyTranspositions(true);
//
// Create Bool Query Builder
//
final QueryBuilder boolQueryBuilder = QueryBuilders.boolQuery().must(fuzzyQueryBuilder);
//
// Create an instance of SearchRequestBuilder
//
SearchRequestBuilder requestBuilder = client.prepareSearch(INDEX_NAME).setTypes(INDEX_TYPE).setQuery(boolQueryBuilder).setSize(100);
//
// Get the search result
//
SearchResponse response = requestBuilder.get();

 

提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 香蕉成人999视频 | 天天摸天天 | 欧美视频在线观看一区二区 | 色网站免费 | 亚洲国产日韩在线观频 | 天天躁夜夜躁狠狠躁躁 | 全免费午夜一级毛片真人 | 中文字幕久久亚洲一区 | 2022国产精品最新在线 | 涩涩视频www在线观看入口 | 天天操天天操天天射 | 91视频官网 | 国产亚洲精品激情都市 | a亚洲天堂 | 羞羞视频在线观看 | 曰本a| 国产亚洲精品91 | 欧美色综合高清视频在线 | 黄网站色成年片在线观看 | 亚洲欧美久久婷婷爱综合一区天堂 | 亚洲综合日韩中文字幕v在线 | 狠狠色丁香久久综合五月 | 中文字幕亚洲综合久久2 | 天天舔天天射天天干 | 欧美在线你懂的 | 国产视频网站在线 | 男人天堂v| 韩日一级毛片 | 成在线人永久免费播放视频 | 国产欧美日韩高清专区手机版 | 久久香蕉国产线看观看亚洲片 | 黄色大片视频在线观看 | 成人日韩在线 | 中文字幕综合在线 | 国产在线精品一区二区中文 | 美国一级大黄一片免费网站 | 黄色在线观看视频网站 | 毛片在线观看视频 | 黄大色黄美女精品大毛片 | 亚洲国产综合精品中文字幕 | 国产日韩精品一区在线不卡 |