Neo4j - существует ли синтаксис запроса cypher для отображения (отображения) всех индексов в БД?
Я ищу что-то похожее на MySQL (SHOW INDEXES). Мне удалось получить список индексов, используя py2neo в Python
graphDB = neo4j.GraphDatabaseService()
indexes = graphDB.get_indexes(neo4j.Node)
print(format(indexes))
но я хотел знать, есть ли способ сделать что-то подобное в Cypher.
Ответы
Ответ 1
Пока нет. В Neo4j 2.0 было введено более удобное индексирование cypher, и вы можете выпускать некоторые команды DDL для создания и снижения индексов и ограничений, но с 2.01 это (см. docs), В 1.9 вы не можете определить этот тип схемы с помощью cypher вообще.
-
Существует много способов вне cypher, например
В neo4j-shell
вы можете
- список устаревших индексов с
index --indexes
- укажите все индексы и ограничения индексов с помощью
schema
- индексы списка и ограничения для конкретной метки с помощью
schema ls -l :YourLabel
В neo4j-browser
вы можете
- перечислите все индексы и ограничения индексов с помощью
:schema
- индексы и ограничения для конкретной метки с помощью
:schema ls -l :YourLabel
Большинство API-интерфейсов, которые позволяют выполнять запросы cypher, также предоставляют способы запроса схемы, например
- Собственный Java API
-
GraphDatabaseService.schema().getConstraints()
и .getIndexes()
для схемы ярлыков
-
GraphDatabaseService.index().nodeIndexNames()
и .relationshipIndexNames()
для устаревших индексов
- REST вызовы
-
/db/data/schema/
конечные точки для схемы с меткой
- и
/db/data/index/node/
и /db/data/index/relationship/
для устаревших индексов
Ответ 2
Как насчет команды :schema
? (В оболочке Neo4j это просто schema
).
Работает как шарм для меня в Neo4j 2.0.1
Ответ 3
neo4j 3.1 теперь поддерживает это как встроенную процедуру, которую вы можете вызвать из Cypher:
CALL db.indexes();
http://neo4j.com/docs/operations-manual/3.1/reference/procedures/
Ответ 4
Ну, в Cypher вы не можете этого сделать, но там есть запрос REST API, который работает.
Вы можете проверить его в терминале.
Все индексы в базе данных:
curl http://localhost:7474/db/data/schema/index/
Индексы на определенной метке:
curl http://localhost:7474/db/data/schema/index/User
Ответ 5
Это не совсем ответит на ваш вопрос (I + 1'd jjaderberg).
В py2neo есть некоторая функциональность для меток: http://book.py2neo.org/en/latest/schema/
get_index(label)
Получить список индексированных ключей свойств для метки.
FYI, в оболочке вы можете использовать недокументированную команду schema
.