Database Reference
In-Depth Information
In Riak suchen
Die Riak-Suche analysiert die Daten innerhalb ihres Riak-Clusters und baut
daraus einen invertierten Index auf. An den Begriff
invertierter Index
werden
Sie sich aus dem PostgreSQL-Kapitel erinnern (GIN steht für Generalisier-
ter Invertierter Index). Genau wie GIN sorgt der Riak-Index dafür, dass viele
String-Varianten schnell und effizient gesucht werden können, berücksich-
tigt dabei aber seine verteilte Natur.
Um die Riak-Suche nutzen zu können, müssen Sie es in Ihren
app.config
-
Dateien aktivieren und die Riak-Suchkonfiguration auf
enabled, true
set-
zen.
%% Riak Search Config
{riak
_
search, [
%% To enable Search functionality set this 'true'.
{enabled, true}
]},
Wenn Sie mit Suchmaschinen-Lösungen wie Lucene vertraut sind, ist dieser
Teil ein Kinderspiel. Wenn nicht, hat man den Bogen schnell raus.
Wir müssen der Suche mitteilen, wenn sich Werte in der Datenbank ändern.
Dazu nutzen wir einen Pre-Commit-Hook. Sie können
riak
_
search
_
kv
_
hook
,
die
precommit
-Funktion des Erlang-Moduls, mit dem folgenden Befehl in das
animals
-Bucket einbinden:
$ curl -X PUT http://localhost:8091/riak/animals \
-H "Content-Type: application/json" \
-d '{"props":{"precommit":
[{"mod": "riak
_
search
_
kv
_
hook","fun":"precommit"}]}}'
Der Aufruf
curl http://localhost:8091/riak/animals
zeigt, dass der Hook
in die
precommit
-Eigenschaft des
animal
-Buckets eingefügt wurde. Wenn Sie
nunJSON-oderXML-kodierteDatenindas
animals
-Bucket einfügen, inde-
xiert die Riak-Suche die Feldnamen und Werte. Lassen Sie uns ein paar Tiere
hochladen.
$ curl -X PUT http://localhost:8091/riak/animals/dragon \
-H "Content-Type: application/json" \
-d '{"nickname" : "Dragon", "breed" : "Briard", "score" : 1 }'
$ curl -X PUT http://localhost:8091/riak/animals/ace \
-H "Content-Type: application/json" \
-d '{"nickname" : "The Wonder Dog", "breed" : "German Shepherd", "score" : 3 }'
$ curl -X PUT http://localhost:8091/riak/animals/rtt \
-H "Content-Type: application/json" \
-d '{"nickname" : "Rin Tin Tin", "breed" : "German Shepherd", "score" : 4 }'