Pokud je to skutečně zapotřebí (na serveru asi ne, ale když se to pouští "u sebe", tak ano), můžete si upravit skript na přidávání souborů například takto:
#!/bin/sh coded=`cat $1 | perl -MMIME::Base64 -ne 'print encode_base64($_)'` path=`readlink -e $1` json="{\"product\":\"$2\",\"version\":\"$3\",\"url\":\"$4\",\"file\":\"${coded}\",\"path\":\"${path}\"}" echo "$json" > file.json curl -X POST "localhost:9200/docs3/document/" -d @file.json
Je tam navíc naplňována proměnná ${path} (používám readlink, protože je asi nainstalován všude, kdyžtak mě prosím opravte)
JSON s dotazem se nepatrně rozšíří:
{ "fields" : ["product", "version", "url", "file.content_type", "file.title", "file.date", "file.content_length", "path"], "query" : { "match" : { "file.content" : "requires" } }, "highlight" : { "fields" : { "file.content" : {} } } }
A ve výsledku to může vypadat takto (jen část výsledku):
"fields" : { "file.content_length" : [ "58590" ], "product" : [ "RHDTS" ], "file.content_type" : [ "application/xhtml+xml; charset=UTF-8" ], "file.title" : [ "3.1 Release Notes" ], "path" : [ "/home/tester/elasticsearch-2.4.0/es/RHDTS_ReleaseNotes.html" ], "url" : [ "http:/www.root.cz" ], "version" : [ "2.1" ] },
Aha aha. Toz to je jednoduche.
Zase mi neco uteklo... "na serveru to neni potreba" - Jakto? Prece pokud mi ten nalezeny dokument nemuzes vratit, tak co?
At to nevypada ze jen prudim. Paradni uvod do elasticu a spousta muziky za fakt rozumnou cenu, ale prave neschopnost elasticu pracovat poradne s ulozistem soboru me dycky srasne stvala. Na druhou stranu "schopnost" tohoto by byla zabijakem toho paradniho restapi...
Na screenshotu vysledku hledani je odkaz(?) na ten dokument. Jak se tam objevil? uvazime li ze puvodni demicko neuchovava cestu...
Ajo to ja jsem to mozna dobre nepopsal. "Tady" se totiz dokumentace buildi na Jenkinsu, takze namisto cesty na souborovem systemu ukladam URL do fieldu _url_, ktery v puvodnim mapovani je. Takze lidem, co si pousti ten web klient (resp. jeho sofistikovanejsi podobu s dalsimi filtry, nekdo chce videt zdrojaky, nekdo az vysledny dokument) se do linku vrazi odkaz na vygenerovany HTML v artefaktu popr. na zdrojak ve workspacu, on jim uz Jenkins obsah naserviruje a je to i bezpecnejsi (aspon teoreticky, protoze Jenkins si zajistuje, ze nesahne nekam kam nema).
http://db-engines.com/en/system/Elasticsearch%3BSphinx
A hlavna vyhoda distribuovane indexovanie.
Me se u ES apod. libi ta jednotna komunikace pres RESTful API, takze zadna potreba specializovaneho driveru, odladi se to klidne z CLI atd. Po velmi negativnich zkusenostech s Oracle Forms (uznavam, to je jen vzdalene neco podobneho, nikoli fulltextsearch) uz se mi proprietarni prenosove protokoly ekluji.
Zdar, jaká je výhoda SPHINX oproti Lucene based řešení? Nenašel jsem žádnou, když jsem je porovnával. Teď myslím stran technologie fungování a vlastností fulltext engine.
- runtime modifikace indexu
- FACET search
- minimální možnost ovlivnit řazení výsledků vyhledávání (dynamická penalizace starších dokumentů) u SPHINX
- škálování
- vláda nad procesem zaindexování přes filtry
- vláda nad procesem získávání výsledků přes collectory
- uživatelská podpora (1 vzteklý barryhunter u SPHINXu )
Mirek
jsem se tesil na nejake gui klikatko next next next ze bych si nechal prohledavat desktop a clanek mne vydesil jaky magie jsou nutny k tomu to rozchodit (patrne by jsem na lokale vlastne stejne provozoval klient-server), na tohle nemam
ale v souvislosti s tim jsem nasel docela zajimavy projekt ktery je trochu uzivtelsky privetivejsi
jako GUI klikatko nad ELK doporucuju Kibanu https://www.elastic.co/products/kibana
pouzivat na lokalne hladanie elastic search mi pride dost overkill. asi ako pouzit na 5 tabuliek s jednim uzivatelom postgresql. Kedze ale elastic na pozadi pouziva lucene mozno existuje nejaky tool nad tym pre taketo pouzitie. Aj ked zapocitat si do toho reziu JVM, no neviem. Aj ked ako kedysi (mozno aj dnes) ukazalo KDE ked sa chce tak sa aj vyhladavanie sa da urobit taky aby clovek potreboval minimalne 4 jadro a nejaky super pokrocily db system.
No je pravda, že ta "Java" svádí k tomu to odsuzovat, ale v reálu ES pracuje velmi slušně i na mém sedm let starém polorozpadlém stroji s Core2Duo, pevným diskem (žádný SSD) a 2GB RAM, což je na dnešní dobu docela vykopávka. Vedle ES ještě běží celý desktop, tj. prohlížeč, Thunderbird a vývojové nástroje. Na tomto stroji je jediným reálným zpomalovadlem prohlížeč :)
Mne nejde primarne o to ze odsudzujem javu to v ziadnom pripade, akurat mi to pride ako ist na komara s delom. Ked budem potrebovat jednoduchu databazu s lokalnym uzivatelom tiez asi siahnem po sqlite a nie po postgresql. Proste asi nemoderny a nostalgicky povzdych za casmi ked sa na vec ktora by mozna mala 500kb a ziadne zavislosti sa dotiahne 10mb applikacia a 50mb kniznic.
Jj to souhlasím. Elasticsearch toho umí víc, clusterování atd., takže pro použití na indexování lokálních dokumentů na desktopu to může skutečně být kanón na vrabce (no ono se stačí podívat na zdrojáky stránky tohoto fóra a všechny linkované stylesheety, to jsou tuny zbytečně stahovaných dat). Btw sqlite taky používám, a to i na věci, kde by možná už někdo nasadil MariaDB (děkuji nechci) nebo Postgres; jen mám podezření, že DB konektor je paměťově náročnější než vlastní sqlite engine :-)
tss. Dohledat ;)
Zus jsi zapomel: https://github.com/judovana/JavadocOfflineSearch :)
Co to ma pod sebou? Ten Sphinx? jinak se divam na https://wiki.gnome.org/Projects/Tracker/SupportedFormats a umi toho zda se hodne, pekne
Taky recoll (http://www.recoll.org) funguje dobre. Oproti trackeru ma vic moznosti konfigurace.