中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

網(wǎng)站首屏做多大大型網(wǎng)站建設(shè)方案

網(wǎng)站首屏做多大,大型網(wǎng)站建設(shè)方案,在日本做網(wǎng)站的公司,.net做網(wǎng)站c#目錄 使用運(yùn)行時(shí)字段帶來(lái)的好處 激勵(lì) 折衷 映射運(yùn)行時(shí)字段 定義運(yùn)行時(shí)字段而不使用腳本 忽略運(yùn)行時(shí)字段上的腳本錯(cuò)誤 更新和刪除運(yùn)行時(shí)字段 在搜索請(qǐng)求中定義運(yùn)行時(shí)字段 創(chuàng)建使用其他運(yùn)行時(shí)字段的運(yùn)行時(shí)字段 運(yùn)行時(shí)字段(runtime fields)是在查詢(xún)…

目錄

使用運(yùn)行時(shí)字段帶來(lái)的好處

激勵(lì)

折衷

映射運(yùn)行時(shí)字段

定義運(yùn)行時(shí)字段而不使用腳本

忽略運(yùn)行時(shí)字段上的腳本錯(cuò)誤

更新和刪除運(yùn)行時(shí)字段

在搜索請(qǐng)求中定義運(yùn)行時(shí)字段

創(chuàng)建使用其他運(yùn)行時(shí)字段的運(yùn)行時(shí)字段


運(yùn)行時(shí)字段(runtime fields)是在查詢(xún)時(shí)計(jì)算的字段。運(yùn)行時(shí)字段使你能夠:

  • 向現(xiàn)有文檔添加字段而無(wú)需重新索引數(shù)據(jù)
  • 開(kāi)始處理數(shù)據(jù)而無(wú)需了解其結(jié)構(gòu)
  • 在查詢(xún)時(shí)覆蓋索引字段返回的值
  • 定義用于特定用途的字段而無(wú)需修改底層架構(gòu)

你可以像訪問(wèn)其他任何字段一樣從 search?API 訪問(wèn)運(yùn)行時(shí)字段,Elasticsearch 對(duì)運(yùn)行時(shí)字段的看法也一樣。你可以在?index mapping?或?search request 中定義運(yùn)行時(shí)字段。你的選擇是運(yùn)行時(shí)字段固有靈活性的一部分。

使用 _search API 上的 fields 參數(shù)來(lái)檢索運(yùn)行時(shí)字段的值。運(yùn)行時(shí)字段不會(huì)顯示在 _source 中,但 fields API 適用于所有字段,即使是那些未作為原始 _source 的一部分發(fā)送的字段。

運(yùn)行時(shí)字段在處理日志數(shù)據(jù)時(shí)很有用(參見(jiàn)后面的示例),尤其是當(dāng)你不確定數(shù)據(jù)結(jié)構(gòu)時(shí)。你的搜索速度會(huì)降低,但索引大小會(huì)小得多,你可以更快地處理日志而無(wú)需索引它們。

這是一個(gè)系列文章中的一篇:

  • Elasticsearch:Runtime fields - 運(yùn)行時(shí)字段(一)

  • Elasticsearch:Runtime fields - 運(yùn)行時(shí)字段(二)

使用運(yùn)行時(shí)字段帶來(lái)的好處

由于運(yùn)行時(shí)字段未編入索引,因此添加運(yùn)行時(shí)字段不會(huì)增加索引大小。你可以直接在索引映射中定義運(yùn)行時(shí)字段,從而節(jié)省存儲(chǔ)成本并提高提取速度。你可以更快地將數(shù)據(jù)提取到 Elastic Stack 中并立即訪問(wèn)。定義運(yùn)行時(shí)字段后,你可以立即將其用于搜索請(qǐng)求、聚合、過(guò)濾和排序。

如果將運(yùn)行時(shí)字段更改為索引字段,則無(wú)需修改引用該運(yùn)行時(shí)字段的任何查詢(xún)。更好的是,你可以引用一些字段是運(yùn)行時(shí)字段的索引,以及字段是索引字段(indexed field)的其他索引。你可以靈活地選擇要索引哪些字段以及將哪些字段保留為運(yùn)行時(shí)字段。

從本質(zhì)上講,運(yùn)行時(shí)字段最重要的好處是能夠在提取字段后將字段添加到文檔中。此功能簡(jiǎn)化了映射決策,因?yàn)槟悴槐仡A(yù)先決定如何解析數(shù)據(jù),并且可以隨時(shí)使用運(yùn)行時(shí)字段來(lái)修改映射。使用運(yùn)行時(shí)字段允許更小的索引和更快的攝取時(shí)間,從而結(jié)合使用更少的資源并降低運(yùn)營(yíng)成本。

激勵(lì)

運(yùn)行時(shí)字段可以取代使用 _search API 編寫(xiě)腳本的許多方式。運(yùn)行時(shí)字段的使用方式受所包含腳本所針對(duì)的文檔數(shù)量的影響。例如,如果你使用 _search API 上的 fields 參數(shù)來(lái)檢索運(yùn)行時(shí)字段的值,則腳本只會(huì)像腳本字段一樣針對(duì)熱門(mén)匹配項(xiàng)運(yùn)行。

你可以使用腳本字段(script fields)訪問(wèn) _source 中的值并返回基于腳本估值的計(jì)算值。運(yùn)行時(shí)字段具有相同的功能,但提供了更大的靈活性,因?yàn)槟憧梢栽谒阉髡?qǐng)求中查詢(xún)和聚合運(yùn)行時(shí)字段。腳本字段只能獲取值。

同樣,你可以編寫(xiě)一個(gè) script query,根據(jù)腳本過(guò)濾搜索請(qǐng)求中的文檔。運(yùn)行時(shí)字段提供了一個(gè)非常相似的功能,但更加靈活。你編寫(xiě)一個(gè)腳本來(lái)創(chuàng)建字段值,它們?cè)谌魏蔚胤蕉伎捎?#xff0c;例如 fields、所有查詢(xún)和聚合。

你還可以使用腳本對(duì)搜索結(jié)果進(jìn)行排序,但同一個(gè)腳本在運(yùn)行時(shí)字段中的工作方式完全相同。

如果你將腳本從搜索請(qǐng)求中的任何部分移至從相同數(shù)量的文檔計(jì)算值的運(yùn)行時(shí)字段,則性能應(yīng)該大致相同。這些功能的性能在很大程度上取決于所包含腳本正在運(yùn)行的計(jì)算以及腳本針對(duì)多少個(gè)文檔運(yùn)行。

折衷

運(yùn)行時(shí)字段占用較少的磁盤(pán)空間,并為你提供訪問(wèn)數(shù)據(jù)的靈活性,但可能會(huì)根據(jù)運(yùn)行時(shí)腳本中定義的計(jì)算影響搜索性能。

為了平衡搜索性能和靈活性,請(qǐng)索引你經(jīng)常搜索和過(guò)濾的字段,例如時(shí)間戳。Elasticsearch 在運(yùn)行查詢(xún)時(shí)會(huì)自動(dòng)首先使用這些索引字段,從而縮短響應(yīng)時(shí)間。然后,你可以使用運(yùn)行時(shí)字段來(lái)限制 Elasticsearch 需要計(jì)算值的字段數(shù)量。將索引字段與運(yùn)行時(shí)字段結(jié)合使用,可以靈活地索引數(shù)據(jù)以及如何定義其他字段的查詢(xún)。

使用?asynchronous search API?運(yùn)行包含運(yùn)行時(shí)字段的搜索。這種搜索方法有助于抵消計(jì)算每個(gè)包含該字段的文檔中的運(yùn)行時(shí)字段值對(duì)性能的影響。如果查詢(xún)無(wú)法同步返回結(jié)果集,你將在結(jié)果可用時(shí)異步獲得結(jié)果。

重要:針對(duì)運(yùn)行時(shí)字段的查詢(xún)被認(rèn)為是昂貴的。如果 search.allow_expensive_queries 設(shè)置為 false,則不允許昂貴的查詢(xún),并且 Elasticsearch 將拒絕任何針對(duì)運(yùn)行時(shí)字段的查詢(xún)。

映射運(yùn)行時(shí)字段

通過(guò)在映射定義下添加運(yùn)行時(shí)部分并定義 Painless 腳本,可以映射運(yùn)行時(shí)字段。此腳本可以訪問(wèn)文檔的整個(gè)上下文,包括通過(guò) params._source 訪問(wèn)的原始 _source 以及任何映射字段及其值。在查詢(xún)時(shí),腳本會(huì)運(yùn)行并為查詢(xún)所需的每個(gè)腳本字段生成值。

發(fā)出運(yùn)行時(shí)字段值

在定義用于運(yùn)行時(shí)字段的 Painless 腳本時(shí),必須包含 emit 方法來(lái)發(fā)出計(jì)算值。

例如,以下請(qǐng)求中的腳本從 @timestamp 字段(定義為日期類(lèi)型)計(jì)算星期幾。該腳本根據(jù) timestamp 的值計(jì)算星期幾,并使用 emit 返回計(jì)算值。

PUT my-index-000001
{"mappings": {"runtime": {"day_of_week": {"type": "keyword","script": {"source": "emit(doc['@timestamp'].value.dayOfWeekEnum.getDisplayName(TextStyle.FULL, Locale.ROOT))"}}},"properties": {"@timestamp": {"type": "date"}}}
}PUT my-index-000001/_doc/1
{"@timestamp": "2024-06-24T04:54:59"
}

我們可以使用如下的命令來(lái)查看我們的索引:

GET my-index-000001/_search
{"fields": ["day_of_week"]
}

上面的命令返回的結(jié)果為:

{"took": 19,"timed_out": false,"_shards": {"total": 1,"successful": 1,"skipped": 0,"failed": 0},"hits": {"total": {"value": 1,"relation": "eq"},"max_score": 1,"hits": [{"_index": "my-index-000001","_id": "1","_score": 1,"_source": {"@timestamp": "2024-06-24T04:54:59"},"fields": {"day_of_week": ["Monday"]}}]}
}

在上面,我們可以看到 day_of_week 的字段值為 Monday。

runtime 部分可以是以下任何一種數(shù)據(jù)類(lèi)型:

  • boolean
  • composite
  • date
  • double
  • geo_point
  • ip
  • keyword
  • long
  • lookup

具有日期類(lèi)型的運(yùn)行時(shí)字段可以接受與 date 字段類(lèi)型完全相同的?format 參數(shù)。

具有 lookup 類(lèi)型的運(yùn)行時(shí)字段允許從相關(guān)索引中檢索字段。請(qǐng)?jiān)敿?xì)參閱之后的章節(jié)。如果啟用了?dynamic field mapping,其中 dynamic 參數(shù)設(shè)置為 runtime,則新字段將自動(dòng)作為運(yùn)行時(shí)字段添加到索引映射中:

PUT my-index-000001
{"mappings": {"dynamic": "runtime","properties": {"@timestamp": {"type": "date"}}}
}

有關(guān) dynamic 設(shè)置為 runtime 的更多描述請(qǐng)閱讀文章 “將字段從 runtime 更改為索引字段”。

定義運(yùn)行時(shí)字段而不使用腳本

運(yùn)行時(shí)字段通常包含一個(gè) Painless 腳本,該腳本以某種方式操縱數(shù)據(jù)。但是,有些情況下,你可能會(huì)定義一個(gè)運(yùn)行時(shí)字段而不使用腳本。例如,如果你想從 _source 中檢索單個(gè)字段而不進(jìn)行更改,則不需要腳本。你可以創(chuàng)建一個(gè)沒(méi)有腳本的運(yùn)行時(shí)字段,例如 day_of_week:

PUT my-index-000001/
{"mappings": {"runtime": {"day_of_week": {"type": "keyword"}}}
}

如果未提供腳本,Elasticsearch 會(huì)在查詢(xún)時(shí)隱式地在 _source 中查找與運(yùn)行時(shí)字段同名的字段,并返回一個(gè)值(如果存在)。如果不存在同名的字段,則響應(yīng)不包含該運(yùn)行時(shí)字段的任何值。

在大多數(shù)情況下,盡可能通過(guò) doc_values 檢索字段值。由于數(shù)據(jù)從 Lucene 加載的方式,使用運(yùn)行時(shí)字段訪問(wèn) doc_values 比從 _source 檢索值更快。

但是,在某些情況下,從 _source 檢索字段是必要的。例如,文本字段默認(rèn)沒(méi)有可用的 doc_values,因此你必須從 _source 檢索值。在其他情況下,你可以選擇在特定字段上禁用 doc_values。

注意:你也可以在要檢索值的字段前加上 params._source 前綴(例如 params._source.day_of_week)。為簡(jiǎn)單起見(jiàn),建議盡可能在映射定義中定義運(yùn)行時(shí)字段而不使用腳本。

忽略運(yùn)行時(shí)字段上的腳本錯(cuò)誤

腳本可能會(huì)在運(yùn)行時(shí)拋出錯(cuò)誤,例如訪問(wèn)文檔中缺失或無(wú)效的值或執(zhí)行無(wú)效操作時(shí)。當(dāng)發(fā)生這種情況時(shí),on_script_error 參數(shù)可用于控制錯(cuò)誤行為。將此參數(shù)設(shè)置為 continue 將默認(rèn)忽略此運(yùn)行時(shí)字段上的所有錯(cuò)誤。默認(rèn)失敗值將導(dǎo)致分片失敗,并在搜索響應(yīng)中報(bào)告。

更新和刪除運(yùn)行時(shí)字段

你可以隨時(shí)更新或刪除運(yùn)行時(shí)字段。要替換現(xiàn)有運(yùn)行時(shí)字段,請(qǐng)將新運(yùn)行時(shí)字段添加到同名映射中。要從映射中刪除運(yùn)行時(shí)字段,請(qǐng)將運(yùn)行時(shí)字段的值設(shè)置為 null:

PUT my-index-000001/_mapping
{"runtime": {"day_of_week": null}
}

下游影響 - Downstream impacts

在依賴(lài)查詢(xún)運(yùn)行時(shí)更新或刪除運(yùn)行時(shí)字段可能會(huì)返回不一致的結(jié)果。每個(gè)分片可能有權(quán)訪問(wèn)腳本的不同版本,具體取決于映射更改的生效時(shí)間。

警告:如果你刪除或更新字段,則 Kibana 中依賴(lài)于運(yùn)行時(shí)字段的現(xiàn)有查詢(xún)或可視化可能會(huì)失敗。例如,如果將類(lèi)型更改為布爾值或刪除運(yùn)行時(shí)字段,則使用 ip 類(lèi)型運(yùn)行時(shí)字段的條形圖可視化將會(huì)失敗。

在搜索請(qǐng)求中定義運(yùn)行時(shí)字段

你可以在搜索請(qǐng)求中指定一個(gè) runtime_mappings 部分,以創(chuàng)建僅作為查詢(xún)的一部分存在的運(yùn)行時(shí)字段。你可以將腳本指定為 runtime_mappings 部分的一部分,就像將運(yùn)行時(shí)字段添加到映射一樣。

在搜索請(qǐng)求中定義運(yùn)行時(shí)字段使用的格式與在索引映射中定義運(yùn)行時(shí)字段的格式相同。只需將字段定義從索引映射中的運(yùn)行時(shí)復(fù)制到搜索請(qǐng)求的 runtime_mappings 部分即可。

以下搜索請(qǐng)求將 day_of_week 字段添加到 runtime_mappings 部分。字段值將動(dòng)態(tài)計(jì)算,并且僅在此搜索請(qǐng)求的上下文中計(jì)算:

DELETE my-index-000001PUT my-index-000001/_doc/1
{"@timestamp": "2024-06-24T04:54:59"
}GET my-index-000001/_search
{"runtime_mappings": {"day_of_week": {"type": "keyword","script": {"source": "emit(doc['@timestamp'].value.dayOfWeekEnum.getDisplayName(TextStyle.FULL, Locale.ROOT))"}}},"aggs": {"day_of_week": {"terms": {"field": "day_of_week"}}}
}

上面查詢(xún)請(qǐng)求的結(jié)果為:

{"took": 1,"timed_out": false,"_shards": {"total": 1,"successful": 1,"skipped": 0,"failed": 0},"hits": {"total": {"value": 1,"relation": "eq"},"max_score": 1,"hits": [{"_index": "my-index-000001","_id": "1","_score": 1,"_source": {"@timestamp": "2024-06-24T04:54:59"}}]},"aggregations": {"day_of_week": {"doc_count_error_upper_bound": 0,"sum_other_doc_count": 0,"buckets": [{"key": "Monday","doc_count": 1}]}}
}

創(chuàng)建使用其他運(yùn)行時(shí)字段的運(yùn)行時(shí)字段

你甚至可以在搜索請(qǐng)求中定義運(yùn)行時(shí)字段,以返回來(lái)自其他運(yùn)行時(shí)字段的值。例如,假設(shè)你批量索引一些傳感器數(shù)據(jù):

DELETE my-index-000001POST my-index-000001/_bulk?refresh=true
{"index":{}}
{"@timestamp":1516729294000,"model_number":"QVKC92Q","measures":{"voltage":"5.2","start": "300","end":"8675309"}}
{"index":{}}
{"@timestamp":1516642894000,"model_number":"QVKC92Q","measures":{"voltage":"5.8","start": "300","end":"8675309"}}
{"index":{}}
{"@timestamp":1516556494000,"model_number":"QVKC92Q","measures":{"voltage":"5.1","start": "300","end":"8675309"}}
{"index":{}}
{"@timestamp":1516470094000,"model_number":"QVKC92Q","measures":{"voltage":"5.6","start": "300","end":"8675309"}}
{"index":{}}
{"@timestamp":1516383694000,"model_number":"HG537PU","measures":{"voltage":"4.2","start": "400","end":"8625309"}}
{"index":{}}
{"@timestamp":1516297294000,"model_number":"HG537PU","measures":{"voltage":"4.0","start": "400","end":"8625309"}}

索引后,你意識(shí)到你的數(shù)字?jǐn)?shù)據(jù)被映射為 text 類(lèi)型。你想在 measures.start 和 measures.end 字段上進(jìn)行聚合,但聚合失敗,因?yàn)槟銦o(wú)法在文本類(lèi)型的字段上進(jìn)行聚合。運(yùn)行時(shí)字段來(lái)拯救你!你可以添加與索引字段同名的運(yùn)行時(shí)字段并修改數(shù)據(jù)類(lèi)型:

PUT my-index-000001/_mapping
{"runtime": {"measures.start": {"type": "long"},"measures.end": {"type": "long"}}
}

運(yùn)行時(shí)字段優(yōu)先于索引映射中用相同名稱(chēng)定義的字段。這種靈活性允許你隱藏現(xiàn)有字段并計(jì)算不同的值,而無(wú)需修改字段本身。如果你在索引映射中犯了錯(cuò)誤,則可以使用運(yùn)行時(shí)字段來(lái)計(jì)算在搜索請(qǐng)求期間覆蓋映射中的值的值。

現(xiàn)在,你可以輕松地對(duì) measures.start 和 measures.end 字段運(yùn)行平均聚合:

GET my-index-000001/_search
{"size": 0, "aggs": {"avg_start": {"avg": {"field": "measures.start"}},"avg_end": {"avg": {"field": "measures.end"}}}
}

響應(yīng)包括聚合結(jié)果,但不改變基礎(chǔ)數(shù)據(jù)的值:

此外,你可以將運(yùn)行時(shí)字段定義為計(jì)算值的搜索查詢(xún)的一部分,然后在同一查詢(xún)中對(duì)該字段運(yùn)行統(tǒng)計(jì)聚合。

duration 運(yùn)行時(shí)字段在索引映射中不存在,但我們?nèi)匀豢梢栽谠撟侄紊线M(jìn)行搜索和聚合。以下查詢(xún)返回持續(xù)時(shí)間字段的計(jì)算值,并運(yùn)行統(tǒng)計(jì)聚合以計(jì)算從聚合文檔中提取的數(shù)值的統(tǒng)計(jì)信息。

GET my-index-000001/_search
{"size": 0, "runtime_mappings": {"duration": {"type": "long","script": {"source": """emit(doc['measures.end'].value - doc['measures.start'].value);"""}}},"aggs": {"duration_stats": {"stats": {"field": "duration"}}}
}

即使 duration 運(yùn)行時(shí)字段僅存在于搜索查詢(xún)的上下文中,你也可以搜索并聚合該字段。這種靈活性非常強(qiáng)大,使你能夠在單個(gè)搜索請(qǐng)求中糾正索引映射中的錯(cuò)誤并動(dòng)態(tài)完成計(jì)算。

http://m.risenshineclean.com/news/58525.html

相關(guān)文章:

  • 營(yíng)銷(xiāo)型網(wǎng)站設(shè)計(jì)模板全國(guó)疫情最新數(shù)據(jù)
  • 裝修照片seo推廣哪家好
  • 怎么做網(wǎng)站主頁(yè)設(shè)計(jì)網(wǎng)站seo收錄
  • 常熟高端網(wǎng)站建設(shè)游戲推廣論壇
  • 廣州免費(fèi)核酸在哪里做臺(tái)州關(guān)鍵詞優(yōu)化服務(wù)
  • 國(guó)內(nèi)互聯(lián)網(wǎng)大廠有哪些站長(zhǎng)工具seo
  • 任丘 做網(wǎng)站免費(fèi)網(wǎng)站流量統(tǒng)計(jì)
  • 學(xué)校網(wǎng)站建設(shè)方案模板下載怎么制作公司網(wǎng)站
  • 網(wǎng)站建設(shè)功能是什么微信軟文案例
  • 慈云寺網(wǎng)站建設(shè)外鏈吧官網(wǎng)
  • 咨詢(xún)公司起名用字大全寧波seo關(guān)鍵詞培訓(xùn)
  • 短視頻營(yíng)銷(xiāo)推廣策略上海做網(wǎng)站優(yōu)化
  • 定制網(wǎng)站開(kāi)發(fā)一般多少錢(qián)百度搜索官方網(wǎng)站
  • 做粉絲網(wǎng)站會(huì)侵權(quán)嗎如何快速推廣網(wǎng)上國(guó)網(wǎng)
  • 免費(fèi)素材庫(kù)短視頻素材網(wǎng)站互動(dòng)營(yíng)銷(xiāo)名詞解釋
  • 接網(wǎng)站開(kāi)發(fā)的公司電話線上推廣是做什么的
  • 南寧企業(yè)網(wǎng)站建設(shè)包頭整站優(yōu)化
  • 網(wǎng)站建設(shè)上機(jī)考試怎么找一手app推廣代理
  • 網(wǎng)頁(yè)與網(wǎng)站設(shè)計(jì)什么是整體造型如何檢測(cè)網(wǎng)站是否安全
  • 做網(wǎng)站的目的什么網(wǎng)站可以發(fā)布廣告
  • 成都三合一網(wǎng)站建設(shè)蘇州網(wǎng)絡(luò)公司
  • 做網(wǎng)站用的什么服務(wù)器優(yōu)秀企業(yè)網(wǎng)站模板
  • github 可以做網(wǎng)站嗎如何創(chuàng)建網(wǎng)站教程
  • 佛山免費(fèi)網(wǎng)站制作百度排名點(diǎn)擊器
  • 國(guó)外做機(jī)械設(shè)計(jì)任務(wù)的網(wǎng)站求職seo
  • 個(gè)人網(wǎng)站可以做資訊嗎?網(wǎng)絡(luò)推廣課程培訓(xùn)
  • 潁州網(wǎng)站建設(shè)最近新聞?wù)?/a>
  • 優(yōu)惠購(gòu)網(wǎng)站怎么做的青島網(wǎng)站建設(shè)與設(shè)計(jì)制作
  • 佛山做公司網(wǎng)站地推項(xiàng)目平臺(tái)
  • 做動(dòng)態(tài)文字的網(wǎng)站杭州網(wǎng)站定制