Ang Elasticsearch usa ka search engine nga adunay json rest api, gamit ang Lucene ug gisulat sa Java. Ang usa ka paghulagway sa tanan nga mga bentaha niini nga makina anaa sa opisyal nga website. Sa kung unsa ang mosunod atong ipunting ang Elasticsearch ingon ES.
Ang parehas nga mga makina gigamit alang sa komplikado nga pagpangita sa usa ka database sa dokumento. Pananglitan, pangitaa nga gikonsiderar ang morpolohiya sa pinulongan o pagpangita pinaagi sa geo coordinates.
Niini nga artikulo maghisgot ako bahin sa mga sukaranan sa ES gamit ang panig-ingnan sa pag-index sa mga post sa blog. Ipakita ko kanimo kung unsaon pagsala, paghan-ay ug pagpangita sa mga dokumento.
Aron dili magdepende sa operating system, buhaton nako ang tanan nga mga hangyo sa ES gamit ang CURL. Adunay usab usa ka plugin alang sa google chrome nga gitawag pagbati.
Ang teksto adunay mga link sa dokumentasyon ug uban pang mga gigikanan. Sa katapusan adunay mga link alang sa dali nga pag-access sa dokumentasyon. Ang mga kahulugan sa dili pamilyar nga mga termino makita sa mga glossary.
Pag-instalar sa ES
Aron mahimo kini, kinahanglan una namon ang Java. Mga developer rekomend i-install ang mga bersyon sa Java nga mas bag-o kaysa sa Java 8 update 20 o Java 7 update 55.
Awtomatikong gihimo ang ES indeks blog ug type sa post. Mahimo kitang magdrowing og conditional analogy: ang index usa ka database, ug ang type kay table niini nga database. Ang matag tipo adunay kaugalingon nga laraw β mapping, sama sa usa ka relational nga lamesa. Awtomatikong namugna ang pagmapa sa dihang na-indeks ang dokumento:
# ΠΠΎΠ»ΡΡΠΈΠΌ mapping Π²ΡΠ΅Ρ ΡΠΈΠΏΠΎΠ² ΠΈΠ½Π΄Π΅ΠΊΡΠ° blog
curl -XGET "$ES_URL/blog/_mapping?pretty"
Sa tubag sa server, gidugang nako ang mga kantidad sa mga natad sa na-index nga dokumento sa mga komento:
Angay nga hinumdoman nga ang ES wala maglainlain tali sa usa ka kantidad ug usa ka laray sa mga kantidad. Pananglitan, ang natad sa titulo adunay yano nga titulo, ug ang field sa mga tag adunay usa ka han-ay sa mga kuwerdas, bisan kung kini girepresentahan sa parehas nga paagi sa pagmapa.
Maghisgot pa kita bahin sa pagmapa sa ulahi.
Mga hangyo
Pagkuha sa usa ka dokumento pinaagi sa id niini:
# ΠΈΠ·Π²Π»Π΅ΡΠ΅ΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ Ρ id 1 ΡΠΈΠΏΠ° post ΠΈΠ· ΠΈΠ½Π΄Π΅ΠΊΡΠ° blog
curl -XGET "$ES_URL/blog/post/1?pretty"
Bag-ong mga yawe nagpakita sa tubag: _version ΠΈ _source. Sa kinatibuk-an, ang tanan nga mga yawe nagsugod sa _ giklasipikar nga opisyal.
Key _version nagpakita sa bersyon sa dokumento. Gikinahanglan kini aron molihok ang malaumon nga mekanismo sa pag-lock. Pananglitan, gusto namong usbon ang usa ka dokumento nga adunay bersyon 1. Gisumite namo ang giusab nga dokumento ug gipakita nga kini usa ka pag-edit sa usa ka dokumento nga adunay bersyon 1. Kung adunay lain nga nag-edit usab sa usa ka dokumento nga adunay bersyon 1 ug nagsumite sa mga pagbag-o sa among atubangan, nan Dili modawat ang ES sa among mga pagbag-o, tungod kay gitipigan niini ang dokumento nga adunay bersyon 2.
Key _source naglangkob sa dokumento nga among gi-index. Wala gigamit sa ES kini nga kantidad alang sa mga operasyon sa pagpangita tungod kay Ang mga indeks gigamit sa pagpangita. Aron makadaginot og luna, ang ES nagtipig og compressed source document. Kung kinahanglan ra namon ang id, ug dili ang tibuuk nga gigikanan nga dokumento, mahimo namon nga ma-disable ang pagtipig sa gigikanan.
Kung wala mi magkinahanglan ug dugang nga impormasyon, makuha ra namo ang sulod sa _source:
Gipili namo ang katapusang post. size limitahan ang gidaghanon sa mga dokumento nga i-isyu. total nagpakita sa kinatibuk-ang gidaghanon sa mga dokumento nga katumbas sa hangyo. sort sa output naglangkob sa usa ka han-ay sa mga integer diin ang paghan-ay gihimo. Mga. ang petsa nakabig ngadto sa integer. Dugang nga impormasyon bahin sa paghan-ay makita sa dokumentasyon.
Mga filter ug pangutana
Ang ES sukad nga bersyon 2 wala mag-ila tali sa mga pagsala ug mga pangutana, sa baylo ang konsepto sa konteksto gipaila.
Ang konteksto sa pangutana lahi sa konteksto sa filter tungod kay ang pangutana nagmugna og _score ug wala gi-cache. Ipakita ko kanimo kung unsa ang _score sa ulahi.
Salain pinaagi sa petsa
Gigamit namo ang hangyo laing sa konteksto sa filter:
Bisan pa, kung pangitaon namon ang "mga istorya" sa natad sa sulud, wala kami makit-an, tungod kay Ang indeks naglangkob lamang sa orihinal nga mga pulong, dili sa mga punoan niini. Aron makahimo usa ka taas nga kalidad nga pagpangita, kinahanglan nimo nga i-configure ang analisador.
uma _score mga pasundayag kalambigitan. Kung ang hangyo gipatuman sa usa ka konteksto sa filter, nan ang _score nga kantidad kanunay nga katumbas sa 1, nga nagpasabut nga usa ka kompleto nga tugma sa filter.
Mga tigtuki
Mga tigtuki gikinahanglan aron ma-convert ang tinubdan nga teksto ngadto sa usa ka set sa mga token.
Ang mga tig-analisar naglangkob sa usa Tokenizer ug pipila ka opsyonal Mga TokenFilters. Ang Tokenizer mahimong mag-una sa pipila CharFilters. Giputol sa mga tokenizer ang source string ngadto sa mga token, sama sa mga space ug punctuation characters. Mahimong usbon sa TokenFilter ang mga token, pagtangtang o pagdugang mga bag-o, pananglitan, biyaan ra ang punoan sa pulong, tangtangon ang mga preposisyon, idugang ang mga synonyms. CharFilter - nagbag-o sa tibuuk nga gigikanan nga string, pananglitan, giputol ang mga tag sa html.
Atong pahimuslan API ug tan-awon nato kung giunsa pagbag-o sa standard ug russian analisador ang hugpong nga "Kataw-anan nga mga istorya bahin sa mga kuting":
Gibahin sa standard analyzer ang string pinaagi sa mga space ug gi-convert ang tanan ngadto sa lower case, gitangtang sa russian analyzer ang dili importante nga mga pulong, gi-convert kini ngadto sa lower case ug gibiyaan ang stem sa mga pulong.
Atong tan-awon kung unsang Tokenizer, TokenFilters, CharFilters ang gigamit sa russian analyzer:
Atong ihulagway ang atong analyzer base sa Russian, nga magputol sa mga html tag. Tawgon nato kini nga default, tungod kay usa ka analista nga adunay kini nga ngalan ang gamiton nga default.
Una, ang tanang HTML tags tangtangon gikan sa source string, unya ang tokenizer standard magbahin niini ngadto sa mga token, ang resulta nga mga token mobalhin ngadto sa lower case, ang dili importante nga mga pulong kuhaon, ug ang nahabilin nga mga token magpabilin nga punoan sa pulong.
Paghimo ug Index
Sa ibabaw among gihulagway ang default analyzer. Kini magamit sa tanan nga mga natad sa string. Ang among post adunay daghang mga tag, mao nga ang mga tag iproseso usab sa analista. Kay Nangita kami og mga post pinaagi sa eksaktong tugma sa usa ka tag, unya kinahanglan namong i-disable ang pagtuki alang sa mga tag field.
Maghimo kita og index blog2 nga adunay analyzer ug mapping, diin ang pag-analisa sa mga tag field gi-disable:
Atong idugang ang parehas nga 3 nga mga post sa kini nga indeks (blog2). Akong laktawan kini nga proseso tungod kay... kini susama sa pagdugang sa mga dokumento sa blog index.
Ang bug-os nga pagpangita sa teksto nga adunay suporta sa ekspresyon
Kay Naggamit kami usa ka analista nga adunay Russian nga stemming, unya kini nga hangyo ibalik ang tanan nga mga dokumento, bisan kung kini adunay sulud nga pulong nga 'kasaysayan'.
Ang hangyo mahimong adunay mga espesyal nga karakter, pananglitan:
""fried eggs" +(eggplant | potato) -frittata"
Paghangyo og syntax:
+ signifies AND operation
| signifies OR operation
- negates a single token
" wraps a number of tokens to signify a phrase for searching
* at the end of a term signifies a prefix query
( and ) signify precedence
~N after a word signifies edit distance (fuzziness)
~N after a phrase signifies slop amount
Kung interesado ka sa parehas nga mga artikulo-mga leksyon, adunay mga ideya alang sa bag-ong mga artikulo, o adunay mga sugyot alang sa kooperasyon, nan malipay ako nga makadawat usa ka mensahe sa usa ka personal nga mensahe o pinaagi sa email [protektado sa email].