日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

在使用ES時,我們常見的就是需要生成一個template來定義索引的設置,分詞器,MApping.本文將基于項目經驗來總結一些常用的配置。

Index設置

  • index.refresh_interval

配置一個刷新時間,將index buffer刷新到os cache的時間間隔,刷新到os cache的數據才可以被索引到,默認是1s.如果對實時性搜索要求不高的地方,可設置時間為30s,提高性能。

  • number_of_replicas

對于集群數據節點 >=2 的場景,建議副本至少設置為 1(一主一從,共兩個副本), 可以提高集群容錯和搜索吞吐量(副本分片可用于查詢)。

  • index.number_of_shards

主副本的分片數,默認是5個,最大值限制為1024個,這個值是分片數可適當的增加,提高索引的并發性能,但是分片越多,也會導致資源耗費越高,索引要根據訪問并發數和ES集群的資源來設置。經驗公式:分片數 = 索引大小/分片大小經驗值 30GB,官方推薦Shard值在 20-40GB性能最好,日志類:單分片<50GB;搜索類:單分片<20GB。不足100G,可直接設置3-5個分片(結合節點數和擴展性),超過100G則可以按照如上經驗公式來規劃。

  • index.max_result_window

索引能夠查詢到最大數據量,from+size深分頁的最大條數,默認是10000,適當限制這個值可以防止深分頁內存占用過多,如果全量導出,需要使用Scroll游標辦法。

  • index.store.preload

默認情況下,Elasticsearch完全依靠操作系統文件系統緩存來緩存I / O操作.可以設置index.store.preload,以告知操作系統在打開時將熱索引文件的內容加載到內存中。默認值為空,即不提前加載索引到內存中,常見的值有["nvd", "dvd", "tim", "doc", "dim"]。對應的norms, doc values, terms dictionaries, postings lists, points,常見的設置為 index.store.preload = ["nvd", "dvd"],即提前加載norms評分信息和doc value數據到內存,便于快速索引。

  • index.sort.field 和 index.sort.order

建立索引的排序字段,寫入的時候就按照順序寫入。對于一些具備順序的字段,可以提前設置,比如時間字段。配置見下

{
    "settings" : {
        "index" : {
            "sort.field" : "date",  // 字段名字
            "sort.order" : "desc"   // 升序 asc 和降序 desc
        }
    }
}

Mapping設置

  • 動態映射

mapping的通用配置,dynamic_templates配置動態類型轉換,將一個類型轉換為另一個類型

{
  "mappings": {
    "_doc": {
      "dynamic_templates": [
        {
          "strings_as_keywords": {
            "match_mapping_type": "string",
            "mapping": {
              "type": "keyword"
            }
          }
        }
      ],
      "_source": {
        "enabled": true
      },
      "properties": {
        .....
      }
    }
  }
}
  • 字段類型

官方文檔:https://www.elastic.co/guide/en/elasticsearch/reference/6.8/mapping.html#_field_datatypes

a simple type like text, keyword, date, long, double, boolean or ip.

a type which supports the hierarchical nature of JSON such as object or nested.

or a specialised type like geo_point, geo_shape, or completion.

  • 常見的類型和搜索類型的聯系

(1)text 類型作用:分詞,將大段的文字根據分詞器切分成獨立的詞或者詞組,以便全文檢索。 適用于:email 內容、某產品的描述等需要分詞全文檢索的字段; 不適用:排序或聚合(Significant Terms 聚合例外)

(2)keyword 類型:無需分詞、整段完整精確匹配。 適用于:email 地址、住址、狀態碼、分類 tags。

  • 常見的搜索類型使用的字段類型

term 精確匹配

核心功能:不受到分詞器的影響,屬于完整的精確匹配。

應用場景:精確、精準匹配。

適用類型:keyword。

prefix 前綴匹配

核心功能:前綴匹配。

應用場景:前綴自動補全的業務場景。

適用類型:keyword。

wildcard 模糊匹配

核心功能:匹配具有匹配通配符表達式 keyword 類型的文檔。支持的通配符:*,它匹配任何字符序列(包括空字符序列);?,它匹配任何單個字符。

應用 場景:請注意,選型務必要慎重!此查詢可能很慢多組關鍵次的情況下可能會導致宕機,因為它需要遍歷多個術語。為了防止非常慢的通配符查詢,通配符 不能以任何一個通配符*或?開頭。

match 分詞匹配

核心功能:全文檢索,分詞詞項匹配。

應用場景:實際業務中較少使用,原因:匹配范圍太寬泛,不夠準確。

適用類型:text。

match_phrase 短語匹配

核心功能:match_phrase 查詢首先將查詢字符串解析成一個詞項列表,然后對這些詞項進行搜索; 只保留那些包含 全部 搜索詞項,且 位置"position" 與搜索詞 項相同的文檔。

應用場景:業務開發中 90%+ 的全文檢索都會使用 match_phrase 或者 query_string 類型,而不是 match。

適用類型:text。

multi_match 多組匹配

核心功能:match query 針對多字段的升級版本。

應用場景:多字段檢索。

適用類型:text。

query_string 類型

核心功能:支持與或非表達式+其他N多配置參數。

應用場景:業務系統需要支持自定義表達式檢索。

適用類型:text。

bool 組合匹配

核心功能:多條件組合綜合查詢。

應用場景:支持多條件組合查詢的場景。

適用類型:text 或者 keyword。

一個 bool 過濾器由三部分組成:

must ——所有的語句都 必須(must) 匹配,與 AND 等價。

must_not ——所有的語句都 不能(must not) 匹配,與 NOT 等價。

should ——至少有一個語句要匹配,與 OR 等價。 f

ilter——必須匹配,運行在非評分&過濾模式。

range范圍搜索類型

適用類型:long,integer,double或者 date

  • Mapping 字段的參數設置
ElasticSearch 索引設置總結

 

(1)index,倒排索引,not_analyzed,注意是否分詞,盡量精簡schema字段個數,不會被檢索的字段就不要建立倒排。.field("index", "no")

(2)doc values,正排索引,用于聚合或者排序

(3)norms,analyzed norms存儲了多種正則化算子,用于docs的排序評分,如果不需要排序,可以disable norms

(4)index_options,有docs(文檔有無), freqs(重復出現的文檔評分更高), positions(涵蓋了前2種,并且多了位置信息,用于臨近查詢), offsets(全部,用于高亮)四類

  • ES 索引template模板參考例子
PUT _template/test_template
{
  "index_patterns": [
    "test_index_*",
    "test_*"
  ],
  "settings": {
    "number_of_shards": 1,
    "number_of_replicas": 1,
    "max_result_window": 100000,
    "refresh_interval": "30s"
  },
  "mappings": {
    "properties": {
      "id": {
        "type": "long"
      },
      "title": {
        "type": "keyword"
      },
      "content": {
        "analyzer": "ik_max_word",
        "type": "text",
        "fields": {
          "keyword": {
            "ignore_above": 256,
            "type": "keyword"
          }
        }
      },
      "available": {
        "type": "boolean"
      },
      "review": {
        "type": "nested",
        "properties": {
          "nickname": {
            "type": "text"
          },
          "text": {
            "type": "text"
          },
          "stars": {
            "type": "integer"
          }
        }
      },
      "publish_time": {
        "type": "date",
        "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
      },
      "expected_attendees": {
        "type": "integer_range"
      },
      "ip_addr": {
        "type": "ip"
      },
      "suggest": {
        "type": "completion"
      }
    }
  }
}

分享到:
標簽:ElasticSearch
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定