Запросы по атрибуту в Riak - PullRequest
0 голосов
/ 27 мая 2019

Я разрабатываю приложение с Riak и Java. В основном я хочу хранить новости, для которых у меня есть объект с такими атрибутами:

public String title;
public String author;
public String URL;
public ArrayList<String> categories;
public String description;
public String release;

Работает нормально, но теперь я хочу, чтобы пользователи могли искать новости по ключевым словам.

Проблема в том, что я нахожу в документации по клиенту java запросы только по первичному ключу, которые выполняются следующим образом:

    RiakClient client = RiakClient.newClient(10017, "127.0.0.1");
    Location location = new Location(new 
    Namespace("TestBucket"),"TestKey");

    FetchValue fv = new FetchValue.Builder(location).build();
    FetchValue.Response response = client.execute(fv);

    // Fetch object as String
    String value = response.getValue(String.class);
    System.out.println(value);

    client.shutdown();

Есть ли способ запроса по атрибутам? Например, не могли бы вы найти, есть ли слово в заголовке?

Потому что сейчас единственный вариант, который я вижу, - это получить все объекты из базы данных и выполнить поиск вручную, что мне кажется очень неэффективным.

1 Ответ

0 голосов
/ 18 июня 2019

Да, есть два способа запросить вещи по атрибутам: либо с помощью вторичных индексов (так называемых 2i), либо с помощью Riak Search. Я предлагаю вам начать с использования вторичного индекса, это достаточно просто. В основном, когда вы пишете данные, вам нужно решить, какой атрибут вы хотите проиндексировать. Затем вы можете запросить эти индексы. Они могут быть числовыми или буквенно-цифровыми, и вы можете запрашивать диапазоны.

См. https://docs.riak.com/riak/kv/latest/using/reference/secondary-indexes/index.html И пример использования 2i с HTTP API: https://docs.riak.com/riak/kv/latest/developing/api/http/secondary-indexes/index.html

Ознакомьтесь с документом Java-клиента, который вы используете.

...