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

Elastic Search一些用法

這篇具有很好參考價值的文章主要介紹了Elastic Search一些用法。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、滾動查詢

參考: 中國開源社區(qū)

  /**
     * 滾動查詢, 并批量保存
     *
     * @param indexName
     * @return
     */
    public int scrollIndexName(String indexName) {
        NativeSearchQueryBuilder nativeSearchQueryBuilder = new NativeSearchQueryBuilder();
        NativeSearchQuery searchQuery = nativeSearchQueryBuilder.withQuery(QueryBuilders.matchAllQuery()).build();
        // 滾動一次數據量為1w
        searchQuery.setMaxResults(10000);
        // 第一次查詢
        SearchScrollHits<RawDocDO> searchScrollHits = elasticsearchRestTemplate.searchScrollStart(60000, searchQuery, RawDocDO.class, IndexCoordinates.of(indexName));
        String scrollId = searchScrollHits.getScrollId();
        List<RawDocDO> rawDocDOList = new ArrayList<>();
        for (SearchHit<RawDocDO> searchHit : searchScrollHits.getSearchHits()) {
            RawDocDO content = searchHit.getContent();
            rawDocDOList.add(content);
        }
        String replace = indexName.replace("index", "latest");
        // 創(chuàng)建索引結構
        createIndex(replace, indexName.substring(6, 8));
        // 批量插入數據
        bulkIndexName(rawDocDOList, replace);
        // 批量創(chuàng)建總數
        int count = rawDocDOList.size();
        Long temp = searchScrollHits.getTotalHits();
        temp -= 10000;
        List<String> scrollIdList = new ArrayList<>();
        scrollIdList.add(scrollId);
        // 循環(huán)滾動插入
        while (temp > 0) {
            // 繼續(xù)滾動
            searchScrollHits = elasticsearchRestTemplate.searchScrollContinue(scrollId, 60000, RawDocDO.class, IndexCoordinates.of(indexName));
            List<RawDocDO> rawDocDOList2 = new ArrayList<>();
            for (SearchHit<RawDocDO> searchHit : searchScrollHits.getSearchHits()) {
                RawDocDO content = searchHit.getContent();
                rawDocDOList2.add(content);
            }
            // 批量插入數據
            bulkIndexName(rawDocDOList2, replace);
            // 累加
            count += rawDocDOList2.size();
            scrollId = searchScrollHits.getScrollId();
            temp -= 10000;
        }

        logger.info("批量插入{}條數據到{}索引中", rawDocDOList.size(), replace);
        scrollIdList.add(scrollId);
        // 清除 scroll
        elasticsearchRestTemplate.searchScrollClear(scrollIdList);
        return count;
    }

二、設置權重

  • 官方介紹
  • ES 的權重排序
  • 【Elasticsearch】ElasticSearch 7.8 多字段權重排序

三、動態(tài)模板

1、基本概念

  • ElasticSearch7.3學習(十三)----定制動態(tài)映射(dynamic mapping)
  • 【Elasticsearch教程4】Mapping 動態(tài)映射
  • 【Elasticsearch教程5】Mapping 動態(tài)模板 Dynamic templates

2、原生創(chuàng)建動態(tài)模板

#刪除已有index
DELETE my_index
# 創(chuàng)建dynamic_templates,以is開頭的被識別為boolean類型,string類型匹配為keyword類型
PUT my_index
{
  "mappings": {
    "dynamic_templates": [
            {
        "strings_as_boolean": {
          "match_mapping_type":   "string",
          "match":"is*",
          "mapping": {
            "type": "boolean"
          }
        }
      },
      {
        "strings_as_keywords": {
          "match_mapping_type":   "string",
          "mapping": {
            "type": "keyword"
          }
        }
      }
    ]
  }
}

3、ElasticSearch-data整合springboot創(chuàng)建

注意事項:需要先創(chuàng)建模板,然后添加數據,新增的數據則會按照模板的格式來創(chuàng)建。如果直接設置了索引的mapping,則模板映射會失效,模板是用戶添加數據時候自動給屬性添加映射類型。

  • 在resource目錄下新建template-mapping.json
{
  "dynamic_templates": [
    {
      "content": {
        "match": "content",
        "mapping": {
          "analyzer": "standard",
          "search_analyzer": "english"
        }
      }
    },
    {
      "title": {
        "match": "title",
        "mapping": {
          "analyzer": "standard",
          "search_analyzer": "english"
        }
      }
    },
    {
      "summary": {
        "match": "summary",
        "mapping": {
          "analyzer": "standard",
          "search_analyzer": "english"
        }
      }
    }
  ]
}


  • 定義實體對象
package com.tmxbase.psas.dal.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.*;

import java.io.Serializable;

@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
@Document(indexName = "#{@esAttribute.indexName}", replicas = 0, shards = 5)
//@Mapping(mappingPath = "/raw-doc-mapping.json")
//@DynamicTemplates(mappingPath = "/raw-doc-templates.json")
@Setting(settingPath = "/rawDoc-setting.json")
public class RawDocDO implements Serializable {
    // 字段
    public static final String ENTRY_ID_FIELD = "_id";

    @Id
    private String docId; // 數據id
    @Field(type =  FieldType.Text, analyzer = "ik_smart", termVector = TermVector.with_positions_offsets, similarity = Similarity.BM25, fielddata = true)
    private String summary; // 文章摘要
    @Field(type =  FieldType.Text, analyzer = "ik_smart", termVector = TermVector.with_positions_offsets, similarity = Similarity.BM25, fielddata = true)
    private String content; // 文章內容
    @Field(type =  FieldType.Text, analyzer = "ik_smart", termVector = TermVector.with_positions_offsets, similarity = Similarity.BM25, fielddata = true)
    private String title; //  文章標題
    @Field(type = FieldType.Keyword)
    private String media; // 媒體類型
    @Field(type = FieldType.Byte)
    private byte emotion; //  文章情感類型 positive=3 neutral=2 negative=1
    private String lan; // 文章所屬語言
    @Field(type = FieldType.Keyword, index = false)
    private String href; // 文章來源頁
    @Field(type = FieldType.Keyword)
    private String country; // 文章來源國家
    @Field(type = FieldType.Date, format = DateFormat.custom, pattern = "yyyy-MM-dd HH:mm:ss")
    private String time; // 文章發(fā)布時間
}

四、分詞器

  • Lucene中常用的幾個分詞器
  • ES之分詞以及各大分詞器
  • ES-文本分析(analysis)
  • Elasticsearch分詞器簡介與使用(一)

1、內置的分詞器

(1)ES的內置分詞器如下:

分詞器 描述
Standard Analyzer ES的標準分詞器,主要用于英文分詞
Simple Analyzer 簡單分詞器,按非英文字母進行分詞,同時轉化成小寫字母
Whitespace Analyzer 空格分詞器,按空格分詞
Stop Analyzer 類似于Simple Analyzer,但是增加了停頓詞功能
Keyword Analyzer 關鍵詞分詞器
Pattern Analyzer 正則分詞器,支持停頓詞
Language Analyzer 針對特定語言的分詞器
Fingerprint Analyzer 指紋分詞器,通過創(chuàng)建標記進行重復檢測

內置的分詞器一般用于簡單的測試,或者簡單常規(guī)要求的英文文檔索引。

(2)內置分詞器設置禁用詞

  • 在elasticSearch配置文件config目錄下,添加stopWord.txt文件。
  • 在添加索引setting時候,加入配置
    es 設置分詞的權重,Elastic Search,elasticsearch

2、IK分詞器使用

ES如果需要索引中文內容,則使用最多的分詞器就是IK分詞器了。github地址:https://github.com/medcl/elasticsearch-analysis-ik

IK_smart設置禁用詞

es 設置分詞的權重,Elastic Search,elasticsearch

ik分詞器設置禁用詞與默認的分詞器設置有所不同。

  • 在 elasticsearch-7.x.x\plugins\ik\config\ 目錄下,打開目錄可以看到有 stopword.dicextra_stopword.dic 兩個文件。stopword.dic 里面的為配置的英文停用詞,extra_stopword.dic 里面為配置的中文停用詞。

  • 默認是使用 stopword.dic 的,想要使用 extra_stopword.dic 的話是需要在 ik 中進行配置的,配置文件為 IKAnalyzer.cfg.xml
    es 設置分詞的權重,Elastic Search,elasticsearch

(3) 配置完成后重啟 elasticsearch,就可以發(fā)現停用詞已經不再對搜索產生影響了。

3、 安裝其他分詞器

安裝越南語分詞器

五、路由Routing

代寫…

六、聚合分組查詢

待寫…

七、動態(tài)的為ElasticSearch的@Document指定index

1.在配置文件里設置indexName(只能設置一個indexName)

創(chuàng)建配置Bean:

@Component("esAttribute")
// 指定配置文件
@PropertySource("classpath:application.properties")
public class EsAttribute {
    @Value("${index.name}")
    private String indexName;

    public String getIndexName() {
        return indexName;
    }

    public void setIndexName(String indexName) {
        this.indexName = indexName;
    }
}

在application.properties中添加:

index.name=tomcat1-*

在ElasticSearch返回的類型中使用:

@Data
@NoArgsConstructor
@Accessors(chain = true)
@Document(indexName = "#{@esAttribute.indexName}", shards = 1, replicas = 0,createIndex = true)
public class AppLogBean implements Serializable {
	
	private static final long serialVersionUID = -729624360020627702L;

	@Id
	private String id;
   
	@Field(type = FieldType.Keyword)
    private String customer_time;
}

在操作過程中可能會報這個錯誤:java.lang.IllegalArgumentException: Could not resolve placeholder ‘index.name’ in value "${index.name}
原因可能是使用@Value的類上未指定配置文件:@PropertySource("classpath:application.properties")
也可能是你的配置文件是yml類型,而該注解只支持properties文件引入,并不支持yml,至于如何讓其可以加載yml文件,自行搜索。

2.在代碼中設置indexName(可以根據條件設置不同的indexName)

創(chuàng)建配置Bean:

@Component("esAttribute")
public class EsAttribute {
  
    private String indexName;

    public String getIndexName() {
        return indexName;
    }

    public void setIndexName(String indexName) {
        this.indexName = indexName;
    }
}

在你需要的地方設置indexName:

@Autowired
private EsAttribute esAttribute;
// 動態(tài)設置索引名稱
esAttribute.setIndexName("tomcat1-*");
logger.info("索引名稱indexName:" + esAttribute.getIndexName());

在ElasticSearch返回的類型中使用:

@Data
@NoArgsConstructor
@Accessors(chain = true)
@Document(indexName = "#{@esAttribute.indexName}", shards = 1, replicas = 0,createIndex = true)
public class AppLogBean implements Serializable {
	
	private static final long serialVersionUID = -729624360020627702L;

	@Id
	private String id;
   
	@Field(type = FieldType.Keyword)
    private String customer_time;
}

八、ES嵌套類型

1、Nested

ES嵌套(Nested)文檔使用文章來源地址http://www.zghlxwxcb.cn/news/detail-738704.html

  • ES中 Nested 類型的原理和使用
  • Elasticsearch Nested類型及應用【2】

2、父子文檔

  • ElasticSearch(四):ES nested嵌套文檔與父子文檔處理
  • elasticsearch之嵌套對象、父子文檔

到了這里,關于Elastic Search一些用法的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

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

領支付寶紅包贊助服務器費用

相關文章

  • Elastic Search的RestFul API入門:如何進行ES的查詢-search

    在這篇教學文章中,我們將深入探討Elasticsearch的search功能。這是一個非常強大且靈活的功能,它允許我們對存儲在Elasticsearch中的數據進行各種復雜的查詢和分析。本章的目標是讓讀者理解如何進行Elasticsearch的搜索,以及如何在搜索過程中自主調整搜索參數,從而靈活地控制

    2024年02月03日
    瀏覽(26)
  • 使用docker安裝elastic search[ES]和kibana

    使用docker安裝elastic search和kibana,版本均為7.17.1 docker pull# 去dockerhub看具體版本,這里用7.17.1 臨時安裝生成文件# 參數說明 -d 后臺啟動 –name 起別名即:NAMES -p 9200:9200 將端口映射出來 elasticsearch的9200端口是供外部訪問使用;9300端口是供內部訪問使用集群間通訊 -e “discovery.

    2024年02月14日
    瀏覽(20)
  • Docker安裝ElasticSearch、Kibana、IK分詞器以及設置ES賬戶密碼

    Docker安裝ElasticSearch、Kibana、IK分詞器以及設置ES賬戶密碼

    版本聲明: 系統(tǒng) :CentOS 7.9(云服務器) ES版本 :7.6.1 Kibana :7.6.1 Ik分析器版本 :7.6.1 1、拉取鏡像 2、創(chuàng)建掛載目錄 設置所有用戶讀寫執(zhí)行權限 : sudo chmod -R 777 /docker_config/elasticsearch/ 3、創(chuàng)建elasticsearch.yml 配置文件 4、創(chuàng)建容器 參數說明 : -p 端口映射 -e discovery.type=single

    2023年04月09日
    瀏覽(34)
  • es--Elastic Search深度分頁問題分析及四種解決方案

    ? Elasticsearch的深度分頁是指當你需要查詢的結果數量非常多時,需要分頁查詢的第n頁時,每次查詢都需要掃描前n-1頁的數據來獲取結果。這樣會導致性能問題,因為它需要很長的時間來完成查詢。 Scroll API: Scroll API可以讓你在每個查詢階段中存儲狀態(tài)。這樣,你就不需要從

    2024年02月08日
    瀏覽(18)
  • elastic search java api 向量搜索實踐 / java結合es實現 以圖搜圖
  • ElasticSearch第三講:ES詳解 - Elastic Stack生態(tài)和場景方案

    ElasticSearch第三講:ES詳解 - Elastic Stack生態(tài)和場景方案

    本文是ElasticSearch第三講,在了解ElaticSearch之后,我們還要了解Elastic背后的生態(tài) 即我們 常說的ELK ;與此同時,還會給你展示ElasticSearch的 案例場景 ,讓你在學習ES前對它有個全局的印象。 Beats + Logstash + ElasticSearch + Kibana 如下是我從官方博客中找到圖,這張圖展示了ELK生態(tài)以

    2024年02月07日
    瀏覽(28)
  • Elasticsearch ES 簡單查詢 Query String Search 入門

    嘗試了text類型排序需要特別處理下. \\\"reason\\\" : \\\"Text fields are not optimised for operations that require per-document field data like aggregations and sorting, so these operations are disabled by default. Please use a keyword field instead. Alternatively, set fielddata=true on [name] in order to load field data by uninverting the inverted index.

    2024年02月16日
    瀏覽(27)
  • Elasticsearch分詞詳解:ES分詞介紹、倒排索引介紹、分詞器的作用、停用詞

    詳見:https://blog.csdn.net/weixin_40612128/article/details/123476053

    2024年02月12日
    瀏覽(33)
  • 【elastic search】JAVA操作elastic search

    【elastic search】JAVA操作elastic search

    目錄 1.環(huán)境準備 2.ES JAVA API 3.Spring Boot操作ES 本文是作者ES系列的第三篇文章,關于ES的核心概念移步: https://bugman.blog.csdn.net/article/details/135342256?spm=1001.2014.3001.5502 關于ES的下載安裝教程以及基本使用,移步: https://bugman.blog.csdn.net/article/details/135342256?spm=1001.2014.3001.5502 在前文

    2024年01月25日
    瀏覽(23)
  • es elasticsearch 十 中文分詞器ik分詞器 Mysql 熱更新詞庫

    es elasticsearch 十 中文分詞器ik分詞器 Mysql 熱更新詞庫

    目錄 中文分詞器ik分詞器 介紹 安裝 使用分詞器 Ik分詞器配置文件 Mysql 熱更新詞庫 介紹 中文分詞器按照中文進行分詞,中文應用最廣泛的是ik分詞器 安裝 官網下載對應版本zip 下載 ?放到 ?plugins 目錄 新建 ik文件夾 考入解析zip 重啟 es //分成小單詞 使用分詞器 ik_max_word分成

    2024年02月07日
    瀏覽(21)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領取紅包

二維碼2

領紅包