Проблемы пространственного индекса с использованием orientdb-enterprise-2.2.21 и orientdb-community-2.2.21

Я пытаюсь создать пространственный индекс через Java API. Я использую Orient DB orientdb-enterprise-2.2.21. Выполнение тестов с использованием удаленного подключения. Я попытался создать несколько подходов. Класс и свойства были созданы.

        nodeClass = graph.createVertexType(NODE_CLASS_NAME);
        nodeClass.createProperty("latitude", OType.DOUBLE);
        nodeClass.createProperty("longitude", OType.DOUBLE);
        nodeClass.createProperty("name", OType.STRING);
        nodeClass.createProperty("color", OType.STRING);
        nodeClass.createProperty("location", OType.EMBEDDED); 

и результаты:

Я создаю пространственный индекс несколькими способами, и все они терпят неудачу:

Случай 1 «по старинке»:

nodeClass.createIndex("Group.latitude_longitude", "SPATIAL", null, null, "LUCENE", new String[] { "latitude", "longitude" });

Полученные результаты:

Exception in thread "main" com.orientechnologies.orient.core.index.OIndexException: Index with type SPATIAL and algorithm null does not exist.
    DB name="demodb"

Случай 2:

     graph.command(new OCommandSQL(
        "CREATE INDEX Group.location ON Group(location) SPATIAL ENGINE LUCENE")).execute();

Полученные результаты:

Exception in thread "main" com.orientechnologies.orient.core.index.OIndexException: Index with type SPATIAL and algorithm null does not exist.
    DB name="demodb"

Случай 3:

     OIndex<?> idx = nodeClass.getProperty("location").
              createIndex(OClass.INDEX_TYPE.SPATIAL, new ODocument().field("ignoreNullValues", true));

Полученные результаты:

Exception in thread "main" com.orientechnologies.orient.core.index.OIndexException: Index with type SPATIAL and algorithm null does not exist.
    DB name="demodb"

пом:

<orientdb.version>2.2.21</orientdb.version>
<tinkerpop.version>2.6.0</tinkerpop.version>
    <dependency>
        <groupId>com.orientechnologies</groupId>
        <artifactId>orientdb-graphdb</artifactId>
        <version>${orientdb.version}</version>
    </dependency>

    <dependency>
        <groupId>com.orientechnologies</groupId>
        <artifactId>orientdb-spatial</artifactId>
        <version>${orientdb.version}</version>
    </dependency>
    <dependency>
        <groupId>com.orientechnologies</groupId>
        <artifactId>orientdb-lucene</artifactId>
        <version>${orientdb.version}</version>
    </dependency>
    <dependency>
        <groupId>com.tinkerpop.gremlin</groupId>
        <artifactId>gremlin-groovy</artifactId>
        <version>${tinkerpop.version}</version>
    </dependency>
    <dependency>
        <groupId>com.tinkerpop.gremlin</groupId>
        <artifactId>gremlin</artifactId>
        <version>${tinkerpop.version}</version>
    </dependency>

У кого-нибудь есть предложения? Столкнулся с таким же поведением с orientdb-community-2.2.21.


person zambra33    schedule 16.06.2017    source источник


Ответы (1)


Вы установили пространственный плагин на сервер?

http://orientdb.com/docs/2.2/Spatial-Index.html

person wolf4ood    schedule 16.06.2017
comment
Спасибо за отзыв, который помог. Однако мне пришлось создать свойство и индекс с помощью встроенного SQL, чтобы оно заработало. Это был единственный способ, которым это работало: OCommandRequest commandRequest = graph.command(new OCommandSQL(CREATE INDEX Group.location ON Group(location) SPATIAL ENGINE LUCENE)); - person zambra33; 17.06.2017
comment
Чтобы было ясно, мне сначала понадобилось -> (1) graph.command(new OCommandSQL(CREATE PROPERTY Group.location EMBEDDED OPoint)).execute(); Затем -> (2) OCommandRequest commandRequest = graph.command(new OCommandSQL(CREATE INDEX Group.location ON Group(location) SPATIAL ENGINE LUCENE)); Просто кажется немного неудобным делать это с Java. Цените информацию. - person zambra33; 17.06.2017