(二)ElasticSearch实战基础教程(ElasticSearch入门)
生活随笔
收集整理的這篇文章主要介紹了
(二)ElasticSearch实战基础教程(ElasticSearch入门)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1.ElasticSearch基礎(chǔ)概念
1.1 文檔(Doucument)
1.ElasticSearch是面向文檔的,文檔是所有可搜索數(shù)據(jù)的最小單位·日志文件中的日志項(xiàng)·一本電影的具體信息/一張唱片的詳細(xì)信息·MP3播放器里面的一首歌/一遍PDF文檔中的具體內(nèi)容 2.文檔是會(huì)被序列化成JSON格式,報(bào)錯(cuò)在ElasticSearch中·JSON對(duì)象由字段組成·每個(gè)字段都有對(duì)應(yīng)的字段類型(字符串/數(shù)值/布爾/日期/二進(jìn)制/范圍類型) 3.每個(gè)文檔都有一個(gè)Unique ID·你可以自己指定ID·或者通過(guò)ElasticSearch自動(dòng)生成1.2JSON文檔
一篇文檔包含了一系列的字段,類似數(shù)據(jù)庫(kù)表中一條記錄 JSON文檔格式靈活不需要預(yù)先定義格式·字段的類型可以指定或者通過(guò)ElasticSearch自動(dòng)推算·支持?jǐn)?shù)組/支持嵌套1.3 文檔的元數(shù)據(jù)
{"_index": "my_test_index","_type": "test_idnex","_id": "AXcpGrIeEQcMCfQJ7Gc5","_score": 1,"_source": {"testId": "4","testName": "zhaoliu"}}元數(shù)據(jù),用于標(biāo)準(zhǔn)文檔的相關(guān)信息
- _index 文檔所屬的索引名
- _type 文檔所屬的類型名
- _id 文檔的唯一id
- _source 文檔原始的JSON數(shù)據(jù)
- _all 整合所有字段的內(nèi)容到該字段,已被作廢
- _version 文檔的版本信息
- _score 相關(guān)性打分
1.4 索引
{"my_test_index": {"settings": {"index": {"search": {"slowlog": {"level": "info","threshold": {"fetch": {"warn": "200ms","trace": "50ms","debug": "80ms","info": "100ms"},"query": {"warn": "200ms","trace": "50ms","debug": "80ms","info": "100ms"}}}},"indexing": {"slowlog": {"level": "info","threshold": {"index": {"warn": "200ms","trace": "20ms","debug": "50ms","info": "100ms"}},"source": "1000"}},"number_of_shards": "5","provided_name": "my_test_index","creation_date": "1611301841428","unassigned": {"node_left": {"delayed_timeout": "5m"}},"number_of_replicas": "1","uuid": "e5B65ySmQ-GE8Tj9gUHIPw","version": {"created": "5050399"}}}} }- INDEX 索引是文檔的容器是一類文檔的結(jié)合
- INDEX 體現(xiàn)了邏輯空間的概念:每個(gè)索引都有自己的mapping定義用于定義包含文檔的字段名和字段類型
- Shard 體現(xiàn)了物理空間的概念 索引中的數(shù)據(jù)分散在Shard上
- 索引的Mapping與Settings
- Mapping 定義文檔字段的類型
- setting 定義不同的數(shù)據(jù)分布
1.5 Type
- 在7.0之前,一個(gè)Index可以設(shè)置多個(gè)Types
- 6.0開(kāi)始,Type已經(jīng)被Deprecated(不推薦使用)。從7.0開(kāi)始一個(gè)索引只能創(chuàng)建一個(gè)Type - > “_doc”
1.6 抽象與類比
| Table | Index(Type) |
| Row | Document |
| Column | Filed |
| Schema | Mapping |
| SQL | DSL |
- 在7.0之前 一個(gè)Index 可以設(shè)置多個(gè)Types
- 目前Type 已經(jīng)被 Deprecated(不推薦使用) ,7.0開(kāi)始一個(gè)索引只能創(chuàng)建一個(gè)Type - > “_doc”
- 傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)和ElasticSearch 的區(qū)別
– ElasticSearch - Schemaless /相關(guān)性/高性能全文檢索
– RDMS - 事務(wù)性/Join
2.節(jié)點(diǎn)、集群、分片及副本
2.1 分布式特性
- ElasticSearch 的分布式架構(gòu)的好處
- 存儲(chǔ)的水平擴(kuò)容
- 提高系統(tǒng)的可用性,部分節(jié)點(diǎn)停止服務(wù)整個(gè)集群的服務(wù)不受影響 - ElasticSearch的分布式架構(gòu)
- 不同集群通過(guò)不同的名字來(lái)區(qū)分 默認(rèn)為 “elasticsearch”
- 通過(guò)配置文件修改,或者在命令行中 -E cluster.name=geektime 進(jìn)行設(shè)定
- 一個(gè)集群可以有一個(gè)或者多個(gè)節(jié)點(diǎn)
2.2 節(jié)點(diǎn)
- 節(jié)點(diǎn)是一個(gè)ElasticSearch 的實(shí)例
– 本質(zhì)上就一個(gè)Java進(jìn)程
– 一臺(tái)機(jī)器上可以運(yùn)行多個(gè)ElasticSearch進(jìn)程,但是生產(chǎn)環(huán)境一般建議一臺(tái)機(jī)器只運(yùn)行一個(gè)ElasticSearch 實(shí)例 - 每一個(gè)節(jié)點(diǎn)都有名字 通過(guò)配置文件配置或者啟動(dòng)的時(shí)候 -E node.name=node1來(lái)指定
- 每一個(gè)接在在啟動(dòng)之后會(huì)分配一個(gè)UID,保存在data目錄下
2.2.1 Master-eligible nodes(合格節(jié)點(diǎn)) 和Master Node(主)
- 每個(gè)節(jié)點(diǎn)啟動(dòng)后 默認(rèn)就是一個(gè) Master eligible節(jié)點(diǎn)
- 可以設(shè)置node.master:false 禁止
- Master-eligible可以參加選主流程,成為Master節(jié)點(diǎn)
- 當(dāng)?shù)谝粋€(gè)節(jié)點(diǎn)啟動(dòng)的時(shí)候,它會(huì)將自己選舉成Master節(jié)點(diǎn)
- 每個(gè)節(jié)點(diǎn)都保存了集群的狀態(tài),只有Master節(jié)點(diǎn)才能修改集群的狀態(tài)信息
- 集群狀態(tài)(Cluster State)維護(hù)了一個(gè)集群中的必要信息
- 所有節(jié)點(diǎn)的信息
- 所有的索引和其相關(guān)的Mapping與Setting信息
- 分片的路由信息
- 任意節(jié)點(diǎn)都能修改信息會(huì)導(dǎo)致數(shù)據(jù)的不一致性
- 集群狀態(tài)(Cluster State)維護(hù)了一個(gè)集群中的必要信息
2.2.2 Data Node & Coordinating Node
- Data Node(數(shù)據(jù)節(jié)點(diǎn))
- 可以保存數(shù)據(jù)的節(jié)點(diǎn)叫做Data Node 負(fù)責(zé)保存分片數(shù)據(jù)。在數(shù)據(jù)擴(kuò)展上起到了至關(guān)重要的作用
- Coordinating Node(協(xié)調(diào)節(jié)點(diǎn))
- 負(fù)責(zé)接收Client請(qǐng)求,將請(qǐng)求分發(fā)到合適的節(jié)點(diǎn),最終把結(jié)果匯集到一起
- 每個(gè)節(jié)點(diǎn)默認(rèn)都起到了 Coordinating Node職責(zé)
2.2.3 其他節(jié)點(diǎn)
- Hot & Warm Node (參考鏈接Hot & Warm Node)
– 不同硬件配置的Data Node,用來(lái)實(shí)現(xiàn) Hot & Warm架構(gòu),降低集群部署的成本 - Machine Learning Node(機(jī)器學(xué)習(xí)節(jié)點(diǎn))
– 負(fù)責(zé)跑 機(jī)器學(xué)的Job 用來(lái)做異常檢測(cè) - Tribe Node (協(xié)調(diào)節(jié)點(diǎn) 充當(dāng)跨多集群聯(lián)合客戶端)
– (5.3 開(kāi)始使用Cross Cluster Search) Tribe Node 連接到不同的ElasticSearch集群,并且支持將這些集群當(dāng)成一個(gè)單獨(dú)的集群
2.2.4 配置節(jié)點(diǎn)類型
- 開(kāi)發(fā)環(huán)境中一個(gè)節(jié)點(diǎn)可以承擔(dān)多種角色
- 生產(chǎn)環(huán)境中,應(yīng)該設(shè)置單一的角色的節(jié)點(diǎn)(dedicate node 專用節(jié)點(diǎn))
| maste eligible | node.master | true |
| data | node.data | true |
| ingest | node.ingest | true |
| coordinating only | 無(wú) | 每個(gè)節(jié)點(diǎn)默認(rèn)都是coordinating 節(jié)點(diǎn)設(shè)置其他類型全部為false |
| machine learning | node.ml | true(需enable x-pack) |
2.3 分片(Primary Shard & Replica Shard)
- 主分片,用以解決數(shù)據(jù)水平擴(kuò)展的問(wèn)題。通過(guò)主分片,可以將數(shù)據(jù)分不到集群內(nèi)的所有節(jié)點(diǎn)之上
- 一個(gè)分片是一個(gè)運(yùn)行的Lucene的實(shí)例
- 主分片數(shù)在索引創(chuàng)建時(shí)指定,后續(xù)不允許修改,除非Reindex
- 副本,用以解決數(shù)據(jù)高可用的問(wèn)題。分片是主分片的拷貝
- 副本分片數(shù),可以動(dòng)態(tài)調(diào)整
- 增加副本數(shù),還可以在一定程度上提高服務(wù)的可用性(讀取的吞吐)
- 一個(gè)三節(jié)點(diǎn)的集群中,blogs索引的分配分布情況
2.3.1 分片的設(shè)定
- 對(duì)于生產(chǎn)環(huán)境中分配的設(shè)定,需要提前做好容量規(guī)劃
- 分片數(shù)設(shè)置過(guò)小
- 導(dǎo)致后續(xù)無(wú)法增加節(jié)點(diǎn)實(shí)現(xiàn)水平擴(kuò)展
- 單個(gè)分片的數(shù)據(jù)量大,導(dǎo)致數(shù)據(jù)重新分配耗時(shí)
- 分片數(shù)設(shè)置過(guò)大,7.0卡死,默認(rèn)主分片設(shè)置成1,解決了over-sharding(shard也是一種資源,shard過(guò)多會(huì)影響集群的穩(wěn)定性。因?yàn)閟hard過(guò)多,元信息會(huì)變多,這些元信息會(huì)占用堆內(nèi)存。shard過(guò)多也會(huì)影響讀寫性能,因?yàn)槊總€(gè)讀寫請(qǐng)求都需要一個(gè)線程。所以如果index沒(méi)有很大的數(shù)據(jù)量,不需要設(shè)置很多shard。)的問(wèn)題
- 影響搜索結(jié)果的相關(guān)性打分,影響統(tǒng)計(jì)結(jié)果的準(zhǔn)確性
- 當(dāng)個(gè)節(jié)點(diǎn)上過(guò)多的分片,會(huì)導(dǎo)致資源的浪費(fèi)同時(shí)也會(huì)影響性能
- 分片數(shù)設(shè)置過(guò)小
2.4 查看集群的健康狀態(tài)
GET _cluster/health {"cluster_name": "es-cn-zz11rb9fv000fj1pe","status": "green","timed_out": false,"number_of_nodes": 6,"number_of_data_nodes": 3,"active_primary_shards": 766,"active_shards": 1507,"relocating_shards": 0,"initializing_shards": 0,"unassigned_shards": 0,"delayed_unassigned_shards": 0,"number_of_pending_tasks": 0,"number_of_in_flight_fetch": 0,"task_max_waiting_in_queue_millis": 0,"active_shards_percent_as_number": 100 } GET _cat/nodes 172.17.25.39 45 91 3 0.23 0.08 0.06 di - 3Ja7gZv 172.17.25.53 55 79 1 0.00 0.01 0.05 mi * H1guebi 172.17.25.52 22 78 0 0.01 0.02 0.05 mi - rdjzfmG 172.17.25.51 24 78 0 0.00 0.01 0.05 mi - uaU255o 172.17.25.38 54 91 2 0.23 0.26 0.16 di - wQwmOos 172.17.25.40 65 89 1 0.01 0.17 0.26 di - 4mZ8XK7GET _cat/shard companyinfo 4 r STARTED 31408061 38.5gb 172.17.25.38 wQwmOos companyinfo 4 p STARTED 31408061 40.2gb 172.17.25.39 3Ja7gZv companyinfo 1 p STARTED 31412834 43.2gb 172.17.25.38 wQwmOos companyinfo 1 r STARTED 31412834 41.7gb 172.17.25.39 3Ja7gZv companyinfo 3 r STARTED 31407535 37.6gb 172.17.25.40 4mZ8XK7 companyinfo 3 p STARTED 31407535 36.8gb 172.17.25.39 3Ja7gZv companyinfo 2 r STARTED 31412927 41.8gb 172.17.25.40 4mZ8XK7 companyinfo 2 p STARTED 31412927 41.2gb 172.17.25.39 3Ja7gZv companyinfo 0 p STARTED 31400572 40.4gb 172.17.25.40 4mZ8XK7 companyinfo 0 r STARTED 31400572 43.1gb 172.17.25.38 wQwmOos- Green 主分片和副本都很正常
- Yellow 主分片全部正常分配,有副本分片未能正常分配
- Red 有主分片未能分配
- 例如當(dāng)服務(wù)器的磁盤容量超過(guò)85%時(shí) 去創(chuàng)建了一個(gè)新的索引
3.文檔的CRUD & 批量操作
3.1 文檔的CRUD
- Type名 約定都用_doc
- Create 如果ID已經(jīng)存在會(huì)失敗
- Index 如果ID不存在創(chuàng)建新的文檔否則先刪除現(xiàn)有的文檔再創(chuàng)建新的文檔 版本會(huì)增加
- Update 文檔必須已經(jīng)存在更新只會(huì)對(duì)響應(yīng)字段做增量修改
3.1.1 Index
PUT my_test_index/_doc/1 {"user":"mike","comment":"You know,for search" }- Index和Create 不一樣的地方:如果文檔不存在,就索引新的文檔。否則現(xiàn)有文檔會(huì)被刪除,新的文檔被索引。版本信息+1
3.1.2 Create
PUT my_test_index/_create/1 {"user":"mike","comment":"You know,for search" } POST my_test_index/_doc (不指定ID 自動(dòng)生成) {"user":"mike","comment":"You know,for search" }- 支持自動(dòng)生成文檔ID 和指定文檔ID的兩種類型
- 通過(guò)調(diào)用"post /my_test_index/_doc"
- 系統(tǒng)會(huì)自動(dòng)生成document id
3.1.3 Read
GET my_test_indx/_doc/_1{"took": 1,"timed_out": false,"_shards": {"total": 1,"successful": 1,"failed": 0},"hits": {"total": 1,"max_score": 1,"hits": [{"_index": "my_store","_type": "products","_id": "5","_score": 1,"_source": {"price": 10,"productName": "ZHANGSAN","productID": "XHDK-A-1293-#fJ3"}}]}- 找到文檔,返回HTTP 200
- 文檔元信息
- _index/_type/
- 版本信息,同一個(gè)ID的文檔即使被刪除,version號(hào)也會(huì)不斷的增加
- _source 中默認(rèn)包含了文檔的所有原始數(shù)據(jù)
- 文檔元信息
- 找不到文檔 返回HTTP 404
3.1.4 Update
POST my_test_index/_update/1 {"doc":{"user":"mike","comment":"You know,ElasticSearch"} }- Update方法不會(huì)刪除原來(lái)的文檔,而是實(shí)現(xiàn)真正的數(shù)據(jù)更新
- Post 方法/Payload 需要包含在 “doc” 中
3.1.4 Delete
DELETE my_test_index/_doc/13.2 Bulk API
-
支持在一次API調(diào)用中,對(duì)不同的索引進(jìn)行操作
-
支持四種類型操作
- Index
- Create
- Update
- Delete
-
可以再URI中指定Index 也可以在Payload 中進(jìn)行
-
操作中單條操作失敗不會(huì)影響其他操作
-
返回結(jié)果包括了每一條操作執(zhí)行的結(jié)果
3.3 批量讀取 -mget
批量操作可以減少網(wǎng)絡(luò)連接所產(chǎn)生的開(kāi)銷 提高性能
3.4 批量查詢 -msearch
3.5常見(jiàn)錯(cuò)誤返回
| 無(wú)法連接 | 網(wǎng)絡(luò)故障或集群故障 |
| 連接無(wú)法關(guān)閉 | 網(wǎng)絡(luò)故障或節(jié)點(diǎn)出錯(cuò) |
| 429 | 集群過(guò)于繁忙 |
| 4XX | 請(qǐng)求體格式有誤 |
| 500 | 集群內(nèi)部錯(cuò)誤 |
4.倒排索引
4.1 正排索引和倒排索引
- 倒排索引包含兩個(gè)部分
- 單詞詞典(Term Dictionary),記錄所有文檔的單詞,記錄單詞到倒排列表的關(guān)聯(lián)關(guān)系
- 單詞詞典一般比較大,可以通過(guò)B+樹(shù)或哈希拉鏈法實(shí)現(xiàn),以滿足高性能的插入和查詢
- 倒排列表(Posting List) 記錄了單詞對(duì)應(yīng)的文檔結(jié)合,由倒排索引組成
- 倒排索引項(xiàng)(Posting)
- 文檔ID
- 詞頻 TF 該單詞在文檔中出現(xiàn)的次數(shù)用于相關(guān)性評(píng)分
- 位置(Position) 單詞在文檔中分詞的位置,用于語(yǔ)句搜索(phrase query)
- 偏移(Offset) 記錄單詞的開(kāi)始結(jié)束位置,實(shí)現(xiàn)高亮顯示
- 倒排索引項(xiàng)(Posting)
- 單詞詞典(Term Dictionary),記錄所有文檔的單詞,記錄單詞到倒排列表的關(guān)聯(lián)關(guān)系
4.2 ElasticSearch的倒排索引
- ElasticSearch的JSON文檔中的每個(gè)字段都有自己的倒排索引
- 可以指定對(duì)某些字段不做索引
- 優(yōu)點(diǎn):節(jié)省存儲(chǔ)空間
- 缺點(diǎn):字段無(wú)法被搜索
5.分詞器
5.1 Alalysis 與 Analyzer
- Alalysis 文本分析是把全文本轉(zhuǎn)換一系列單詞(term/token)的過(guò)程,也叫做分詞
- Alalysis 是通過(guò)Analyzer來(lái)實(shí)現(xiàn)的
- 可使用ElasticSearch內(nèi)置的分析器,或者采用定制化分析器
- 除了在數(shù)據(jù)寫入時(shí)轉(zhuǎn)換詞條,匹配Query語(yǔ)句的時(shí)候也需要用相同的分析器對(duì)語(yǔ)句進(jìn)行分析
5.2 Analyzer的組成
- 分詞器是專門處理分詞的組件,Analyzer由三部分組成
-Character Filters(針對(duì)原始文本處理,例如出去html)/Tokenizer(按照規(guī)則切分單詞)/Token Filter(將切分的單詞進(jìn)行加工,小寫,刪除stopwords,增加同義詞)
5.3 Elasticsearch的內(nèi)置分詞器
- Standard Analyzer 一默認(rèn)分詞器,按詞切分,小寫處理
- Simple Analyzer 一按照非字母切分(符號(hào)被過(guò)濾),小寫處理
- Stop Analyzer 一小寫處理,停用詞過(guò)濾(the,a,is)
- Whitespace Analyzer一按照空格切分,不轉(zhuǎn)小寫
- Keyword Analyzer 一不分詞,直接將輸入當(dāng)作輸出
- Patter Analyzer 一正則表達(dá)式,黑默認(rèn)\W+(非字符分隔)
- Language 一提供了30多種常見(jiàn)語(yǔ)言的分詞器
- Customer Analyzer自定義分詞器
5.3.1 Standard Analyzer
- 默認(rèn)分詞器
- 按詞切分
- 小寫處理
5.3.2 Simple Analyzer
- 按照非字母切分,非字母的都被去除
- 小寫處理
5.3.3 Whitespace Analyzer
- 按照空格進(jìn)行數(shù)據(jù)切分
5.3.4 Stop Analyzer
- 相比Simple Analyzer
- 多了stop filter
- 會(huì)把the,a,is 等修飾詞語(yǔ)去掉
5.3.5 Keyword Analyzer
- 不做分詞處理 將一個(gè)輸入當(dāng)做term輸出
5.3.6 Pattern Analyzer
- 通過(guò)正則表達(dá)式進(jìn)行分詞
- 默認(rèn)是\W+,非字符的符號(hào)進(jìn)行分隔
5.3.7 Language Analyzers
5.4 使用_analyzer Api
- 直接指定Analyzer進(jìn)行測(cè)試
- 使用 Simple Analyzer 進(jìn)行測(cè)試
- 使用Whitespace Analyzer 進(jìn)行測(cè)試
- 使用Stop Analyzer 進(jìn)行測(cè)試
- 使用 Keyword Analyzer進(jìn)行測(cè)試
- 使用 Pattern Analyzer 進(jìn)行測(cè)試
- 用Language Analyzers 來(lái)進(jìn)行測(cè)試
- 指定索引的字段進(jìn)行測(cè)試
- 自定義分詞器進(jìn)行測(cè)試
5.5 中文分詞的難點(diǎn)
-
中文句子,切分成一個(gè)一個(gè)詞 而不是一個(gè)一個(gè)字
-
英文中,單詞有自然的空格作為分隔
-
一句中文,在不同的上下文有不同的理解
- 這個(gè)蘋果,不大好吃/這個(gè)蘋果,不大,好吃!
-
一些例子
- 他說(shuō)的確實(shí)在理/這事確定不下來(lái)
-
使用默認(rèn)的ElasticSearch 分詞器來(lái)對(duì)中文進(jìn)行分詞
5.6 中文分詞器ik
5.6.1 ik分詞器的基本使用
附官方文檔地址:IK分詞器GitHub官方文檔地址
5.6.2 ik_max_word 分詞器解析
GET /_analyze {"analyzer": "ik_max_word","text": "這事確定不下來(lái) " }result{"tokens": [{"token": "這事","start_offset": 0,"end_offset": 2,"type": "CN_WORD","position": 0},{"token": "確定","start_offset": 2,"end_offset": 4,"type": "CN_WORD","position": 1},{"token": "不下來(lái)","start_offset": 4,"end_offset": 7,"type": "CN_WORD","position": 2},{"token": "不下","start_offset": 4,"end_offset": 6,"type": "CN_WORD","position": 3},{"token": "下來(lái)","start_offset": 5,"end_offset": 7,"type": "CN_WORD","position": 4}] }5.6.3 使用ik_smart 進(jìn)行分詞
GET /_analyze {"analyzer": "ik_smart","text": "這事確定不下來(lái) " } result {"tokens": [{"token": "這事","start_offset": 0,"end_offset": 2,"type": "CN_WORD","position": 0},{"token": "確定","start_offset": 2,"end_offset": 4,"type": "CN_WORD","position": 1},{"token": "不下來(lái)","start_offset": 4,"end_offset": 7,"type": "CN_WORD","position": 2}] }5.6.4 使用分詞器進(jìn)行高亮查詢
GET companyinfo/_search{"query" : { "match" : { "entName" : "北京信查查" }},"highlight" : {"pre_tags" : ["<tag1>", "<tag2>"],"post_tags" : ["</tag1>", "</tag2>"],"fields" : {"entName" : {}}},"from": 0, "size": 1 } result {"took": 2357,"timed_out": false,"_shards": {"total": 5,"successful": 5,"failed": 0},"hits": {"total": 4665655,"max_score": 21.237017,"hits": [{"_index": "companyinfo","_type": "companyinfo","_id": "5083796b34f940698d9cb0ce2984f314","_score": 21.237017,"_source": {"id": "5083796b34f940698d9cb0ce2984f314","bossId": "05232caa241311-p-05232d3624131","orgLogo": "https://static.xinchacha.com/companyLogo/5083796b34f940698d9cb0ce2984f314.png?Expires=1609503319&OSSAccessKeyId=LTAI4GFjBCimq7VBgRQ5LKfq&Signature=2DppCS5yzYTZvtMT45GYqdHtjkM%3D","entName": "北京信查查信用管理有限公司","telphone": "400-900-6808","website": "http://www.xcc.com","email": "xcc@xinchacha.com","introduction": "北京信查查信用管理有限公司的主營(yíng)產(chǎn)品是信用通跟加密保","readAddress": "北京市昌平區(qū)龍域北街5號(hào)院1號(hào)樓5層516","corporation": "劉洋","sameEnterprise": "<關(guān)聯(lián)企業(yè)1>","enterpriseStatus": "開(kāi)業(yè)","regCapitalNumber": 1000,"regCapital": "1000萬(wàn)元人民幣","contributedcapital": "","regDate": "2019-08-02","checkDate": "2019-08-02","creditCode": "91110114MA01LTMB1Y","orgCode": "MA01LTMB-1","taxpayerIdNo": "91110114MA01LTMB1Y","taxpayerQualification": "","businessRegCode": "","industry": "信息傳輸、軟件和信息技術(shù)服務(wù)業(yè)","enterpriseType": "有限責(zé)任公司(自然人獨(dú)資)","businessTerm": "2019-08-02 至 無(wú)固定期限","staffSize": "","contributors": "","registrationAuthority": "北京市工商行政管理局昌平分局","city": "北京市","town": "北京市","district": "","oldOrgName": "","orgNameEn": "","address": "北京市昌平區(qū)龍域北街5號(hào)院1號(hào)樓5層516","businessScope": "企業(yè)信用的征集、評(píng)定(不含金融征信);軟件開(kāi)發(fā);計(jì)算機(jī)系統(tǒng)服務(wù);企業(yè)管理;市場(chǎng)調(diào)查;經(jīng)濟(jì)信息咨詢(不含中介);基礎(chǔ)軟件服務(wù);應(yīng)用軟件服務(wù)(不含醫(yī)療軟件);承辦展覽展示活動(dòng);會(huì)議服務(wù);技術(shù)開(kāi)發(fā)、技術(shù)咨詢、技術(shù)交流、技術(shù)轉(zhuǎn)讓、技術(shù)推廣;技術(shù)服務(wù);設(shè)計(jì)、制作、代理、發(fā)布廣告;教育咨詢。((企業(yè)依法自主選擇經(jīng)營(yíng)項(xiàng)目,開(kāi)展經(jīng)營(yíng)活動(dòng);依法須經(jīng)批準(zhǔn)的項(xiàng)目,經(jīng)相關(guān)部門批準(zhǔn)后依批準(zhǔn)的內(nèi)容開(kāi)展經(jīng)營(yíng)活動(dòng);不得從事本市產(chǎn)業(yè)政策禁止和限制類項(xiàng)目的經(jīng)營(yíng)活動(dòng)。))"},"highlight": {"entName": ["<tag1>北京</tag1><tag1>信</tag1><tag1>查查</tag1>信用管理有限公司"]}}]} }5.6.5 分詞器返回結(jié)果詳解
{"tokens": [{"token": "這事","start_offset": 0,"end_offset": 2,"type": "CN_WORD","position": 0}] } token:具體內(nèi)容 start_offset:起始位置 end_offset:結(jié)束位置 type:類型 position:位置(下標(biāo))6 Search API
- URI Search
- 在URL中使用查詢參數(shù)
- Request Body Search
- 使用ElasticSearch提供的,基于JSON格式的更加完備的Query Domain Specific Language(DSL)
6.1 URI 查詢
- 使用 “q”,指定查詢字符串
- “query string syntax”,KV鍵值對(duì)
6.2 Request Body 查詢
6.3 Response 解析
6.3.1 搜索相關(guān)度(Relevance) 相關(guān)度解析
- 搜索是用戶和搜索引擎之間的對(duì)話
- 用戶關(guān)心的是搜索結(jié)果的相關(guān)性
- 是否可以找到所有相關(guān)的內(nèi)容
- 有多少不相關(guān)的內(nèi)容被返回了
- 文檔的打分是否合理
- 結(jié)合業(yè)務(wù)需求平衡排名結(jié)果
6.3.2 衡量相關(guān)性
- Information Retrieval
- Precision(查準(zhǔn)率) 盡可能返回較少的無(wú)關(guān)文檔
- Precision -True Positive/全部返回的結(jié)果(True and False Positive)
- Recall (查全率) 盡量 返回較多的相關(guān)文檔
- Recall -True Positive/所有應(yīng)該返回的結(jié)果(True positives + False Negtives)
- RanKing - 是否能夠按照相關(guān)度進(jìn)行排序
- Precision(查準(zhǔn)率) 盡可能返回較少的無(wú)關(guān)文檔
注:具體可參照ElasticSearch搜索相關(guān)性算分
總結(jié)
以上是生活随笔為你收集整理的(二)ElasticSearch实战基础教程(ElasticSearch入门)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 教师语言表达-语言互动
- 下一篇: 每周跑一下Python脚本,轻松生成工作