Buna tuturor utilizatorilor de Elastic :: Model

Elasticsearch 2.0.0 este disponibil, iar Elastic :: Model nu il accepta. De fapt, Elastic :: Model nu accepta nici un numar de lucruri din Elasticsearch 1.x. Imi cer scuze pentru neglijarea acestui modul.

Sentimentul meu este ca Elastic :: Model incearca sa faca prea mult. La fel ca multe cadre, te leaga sa faci lucrurile intr-un anumit mod, ceea ce poate avea sau nu sens pentru cazul tau de utilizare. Majoritatea persoanelor care folosesc Elastic :: Model par sa foloseasca un subset de functionalitati si apoi vorbesc direct cu Elasticsearch in restul timpului.

Nu cred ca are sens sa actualizam doar codul pentru 2.x, are nevoie de o regandire completa.

SPUNE-MI CUM O FOLIITI

Va rugam sa adaugati comentarii la aceasta problema explicand ce biti vi se par utile, ce biti nu utilizati niciodata si ce biti vi se par deranjante. Poate ca codul poate fi impartit in bucati mai mici si mai utile.

Instalati Elasticsearch

Aveti nevoie de o versiune recenta de Java instalata, apoi descarcati versiunea stabila curenta a Elasticsearch de pe http://www.Elasticsearch.org/download/. De exemplu:

curl -L -O https://github.com/downloads/elasticsearch/elasticsearch/elasticsearch-1.6.0.tar.gz tar -xzf elasticsearch-1.7.3.tar.gz

Nota: Aceasta versiune de Elastic :: Model este destinata pentru Elasticsearch 1.x. Cu toate acestea, poate fi utilizat cu Elasticsearch 0.90.x in „modul de compatibilitate”. Consultati Elastic :: Manual :: Delta pentru instructiuni.

Instalati Elastic :: Model

Utilizati programul de instalare CPAN preferat:

Consultati „TEST SUITE” in ​​Elastic :: Manual pentru a rula intreaga suita de testare impotriva unui cluster local Elasticsearch.

laura marano nude masajes eroticos camara oculta
pajas entre colegas descargar videos porno gratis
porno online follando con abuelas
orgias con abuelas porno senegal
porno traducido español sexo casero españa
enanas porno vecina mirona
comiendo coño ver sexo gratis
follada a traicion videos porno online
corriendose dentro porno gay castellano
follame xxx se folla a
porno gay castellano voyeur playa
pornoamater mamadas en la playa
se folla a su madre porno espaniol
porno gratis abuelos hermanos españoles follando
pepe porno viejas tetonas
videos heroticos supertetas
gays haciendo el amor cornudos consentidos
porno torrent porno violada
sexo con viejas pornografia gratis
porno transexual en español violada xxx

Porniti Elasticsearch

cd elasticsearch-1.6.0 / ./bin/elasticsearch # -d porneste serverul in fundal

Acum aveti un cluster Elasticsearch care ruleaza cu un singur nod. Puteti testa daca ruleaza cu:

curl http: // localhost: 9200 /? pretty = true

Consultati http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/setup.html pentru mai multe informatii despre instalarea si configurarea Elasticsearch.

Creati un model

Mai intai configurati un model simplu. Modelul gestioneaza relatia dintre clasele dvs. si Elasticsearch.

pachetul MyApp; utilizati Elastic :: Model; has_namespace ‘myapp’ => {user => ‘MyApp :: User’}; fara Elastic :: Model; 1;

Modelul dvs. trebuie sa defineasca cel putin un spatiu de nume, care spune Elastic :: Model ce tip (cum ar fi un tabel intr-un DB) care ar trebui sa fie tratat de catre care dintre clasele dvs. Deci, declaratia de mai sus spune:

“Pentru toti indicii care apartin spatiului de nume myapp, obiectele din clasa MyApp :: User vor fi stocate sub tipul utilizator in Elasticsearch.”

Creati-va clasa de utilizator

pachet MyApp :: Utilizator; utilizati Elastic :: Doc; utilizati DateTime (); are ‘name’ => (is => ‘rw’, isa => ‘Str’,); are ’email’ => (is => ‘rw’, isa => ‘Str’,); are ‘created’ => (is => ‘ro’, isa => ‘DateTime’, implicit => sub {DateTime-> now}); fara Elastic :: Doc; 1;

Aceasta clasa simpla Moose se schimba doar „foloseste Moose;” sa „folositi Elastic :: Doc;”. In acest moment nu configuram nimic altceva. Datorita introspectiei lui Moose, avem suficiente informatii pentru a configura tot ce avem nevoie.

Conectati-va modelul la un cluster Elasticsearch

#! / bin / env perl utilizare stricta; utilizati avertismente; utilizati MyApp (); $ modelul meu = MyApp-> new ();

Aceasta creeaza o instanta a modelului dvs., cu o conexiune la un cluster local Elasticsearch. Ultima linie este echivalentul:

utilizati Cautare :: Elasticsearch (); $ es meu = Cautare :: Elasticsearch-> new (client => ‘1_0 :: Direct’, nodes => ‘localhost: 9200’); $ modelul meu = MyApp-> new (es => $ es);

Creati un index

Inainte de a incepe, trebuie sa cream un index (cum ar fi o baza de date intr-un DB relational) in Elasticsearch.

$ model-> namespace (‘myapp’) -> index-> ​​create ();

Acest lucru a creat indexul myapp, care contine tip de utilizator (unde un tip este ca un tabel intr-o baza de date). De asemenea, a configurat maparea tipului (care este ca definitia schemei sau a coloanei).

Indexul nostru este acum gata de utilizare.

Pregatirea pentru accesul la obiect

Inainte de a putea salva sau prelua obiecte / documente din Elasticsearch, avem nevoie de un domeniu:

Obtineti un domeniu

Un domeniu este ca un handle de baza de date. Ne permite sa vorbim cu un anumit index sau alias. (Un alias este ca o comanda rapida care indica unul sau mai multi indici.)

$ domeniu = $ model-> domeniu (‘myapp’);

Consultati Elastic :: Manual :: Scalare pentru mai multe despre cum sa utilizati pseudonimele.

Creati un obiect

In mod normal, ati crea un obiect cu:

$ meu utilizator = MyApp :: Utilizator-> nou (…)

dar pentru a folosi toata magia Elastic :: Model, trebuie sa va creati obiectul prin intermediul obiectului $ domain:

$ meu utilizator = $ domeniu-> nou_doc (utilizator => {# $ tip => \% args_to_new id => 1, # generat automat daca nu este furnizat nume => ‘Clinton’, e-mail => ‘[email protected] ‘,}); $ utilizator-> salvare; # salvati in Elasticsearch

Preluarea unui obiect dupa ID

Acum, putem prelua obiectul utilizator din Elasticsearch, folosind tipul si id-ul:

$ utilizator = $ domeniu-> obtine (utilizator => 1); spune $ user-> nume; # Clinton

Actualizeaza-ti obiectul

$ utilizator-> e-mail („[email protected]”);

Elastic :: Model urmareste ce atribute au fost modificate, plus valoarea lor originala:

spuneti $ user-> has_changed; # 1 spune $ user-> has_changed (‘e-mail’); # 1 dump $ user-> old_values; # {email => ‘[email protected]’};

UID-ul (ID-ul unic) al obiectului urmareste (printre altele) numarul versiunii curente. Elasticsearch foloseste acest numar de versiune pentru a evita suprascrierea modificarilor care au fost facute de un alt proces (consultati Controlul optimist al monedei).

spuneti $ user-> uid-> version; # 1

Numarul versiunii este incrementat de fiecare data cand este salvat un obiect modificat.

$ utilizator-> salvare; spuneti $ user-> uid-> version; # 2 spun $ user-> has_changed; # 0

In mod implicit, totul din Elasticsearch este indexat si poate fi cautat. Puteti cauta intr-un singur index sau mai multi indici, un tip sau mai multe tipuri.

Pentru a interoga obiectele stocate in Elasticsearch, aveti nevoie de o vizualizare. Vizualizarile sunt reutilizabile, deci este posibil sa creati vizualizari precum $ recent_users, $ approved_comments etc.

Crearea unei vizualizari

Puteti crea o vizualizare din obiectul dvs. de domeniu $, caz in care vizualizarea va fi limitata doar la domeniul respectiv:

$ view = $ domain-> view; # limitat la indexul „myapp”;

Pentru a crea o vizualizare care interoga mai multe domenii, puteti face:

$ vizualizare = $ model-> vizualizare-> domeniu ([‘index_1’, ‘alias_2’]);

Sau pentru a interoga toate domeniile cunoscute de modelul dvs.:

Configurarea unei vizualizari

Cand setati un atribut pentru o vizualizare, se returneaza o instanta clonata a vechii vizualizari, ceea ce inseamna ca puteti utiliza o vizualizare pentru a obtine alta:

$ toate = $ domeniu-> vizualizare; # toate tipurile din $ domain $ utilizatori = $ all-> type (‘utilizator’); # tastati „utilizator” in index $ domeniu $ clint = $ utilizatori-> queryb ({nume => „clinton”}); # utilizatori al caror nume este „Clinton”

Sintaxa interogarii

Interogarile pot fi specificate utilizand interogarea standard DSL Elasticsearch sau cu sintaxa mai compacta ElasticSearch :: SearchBuilder, mai perlisha.

Interogare standard DSL:

$ search = $ view-> interogare ({text => {name => ‘clinton’}}) -> filter ({range => {created => {gt => ‘2012-01-01’}}}) ;

Sintaxa SearchBuilder:

$ search = $ view-> queryb ({name => ‘clinton’}) -> filterb ({created => {gt => ‘2012-01-01’}});

Obtinerea rezultatelor cautarii

Dupa ce v-ati definit vizualizarea, apelati o metoda de cautare (de exemplu, cautare ()) care efectueaza cautarea si returneaza un obiect Rezultate.

rezultatele mele $ = $ cautare-> cautare; spuneti “Total rezultate gasite:”. $ rezultate-> total; while ($ doc meu = $ rezultate-> next_doc) {spune $ doc-> nume}

Vizualizarile pot fi, de asemenea, utilizate pentru a returna rezultate evidentiate si agregari, care ofera rezultate agregate, la fel ca functiile GROUP-BY din SQL, de exemplu, cei mai populari termeni sau numarul de postari pe zi.

  • Elastic :: Manual