Neo4j: Index date type field

 I want to search some nodes by date and time. In model,

    @Indexed
    private int startDate;
    @Indexed
    private int startTime;
    @Indexed
    private int endDate;
    @Indexed
    private int endTime;

 

A issue should be note that you should do your custom desirializer Josn to POJO in order to simplify the JSON Post.

 

Repository

@Query("MATCH (n:User)-[:Publish]->(t:NewTask) 
WHERE n.name={0} WITH t.startDate+t.startTime as time, t 
RETURN t  
ORDER BY time")

Iterable<Task>  findNewTasksPublishedByUser(String name);
    

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

References

http://grokbase.com/t/gg/neo4j/13c26tp5bg/how-to-sort-datetime-if-date-and-time-are-in-the-different-fields

http://stackoverflow.com/questions/9138857/in-neo4j-how-can-i-index-by-date-and-search-in-a-date-range

一。图数据库:neo4j操作指南 neo4j 优点:查询高效高可用关系建模直观可视化工具 neo4j 缺点:不适合海量数据,复杂聚合查询慢 能够在大图中实现常数时间的遍历,支持深度和广度的快速查询。 Neo4j是一款原生图数据库,专门用于存储、查询和管理高度关联的数据。 核心特点包括: 1. 图结构存储:以节点(实体)、关系(连接)和属性(键值对)构成数据模型,天然适合表达复杂关联 2. Cypher查询语言:专为图数据设计的声明式查询语言,语法简洁直观 3. ACID事务支持:保证数据操作的原子性、一致性、隔离性和持久性 4. 高性能遍历:针对图遍历操作优化,比传统关系型数据库快数个数量级 核心包括: 节点 (Node):带标签的实体,可包含多个属性 关系 (Relationship):带类型的连接,必须有起点和终点 属性 (Property):以键值对形式存储的数据 标签 (Label):节点的分类标识 路径 (Path):由节点和关系构成的序列 使用的是Cypher查询语言 1.简单操作: 删除数据库 :MATCH (n) DETACH DELETE n 创建数据节点: 创建节点:merger (n:Person {id:'1',name:'李',age:'11'}) return n merger (n:Person {id:'2',name:'张',age:'11'}) return n - 创建之间的关系: MATCH (a:Person {name:'李'}),(b:Person {name:'张'}) merger (a)-[:FRIENDS]->(b) 根据节点(Location)查询 MATCH (a:Person) return a 根据关系查询: MATCH p=()-[r:FRIENDS]->() return p MATCH ()-[r:FRIENDS]->() return r 查询关系的关系: MATCH (a:Person {name:'李'})-[r1:FRIENDS]-()-[r2:FRIENDS]-(friend_of_a_friend) return friend_of_a_friend.name AS fofName 增加/修改节点的属性 修改:MATCH (a:Person {name:'李'}) SET a.age='34' 增加:MATCH (a:Person {name:'李'}) SET a.test='test' 删除属性:MATCH (a:Person {name:'李'}) REMOVE a.test 删除节点关联的关系: MATCH (a:Person {name:'李'})-[r]-()DELETE r 删除节点:MATCH (a:Person {name:'李'}) DELETE a 在操作删除节点的时候先删除关系否则会报错 有关系的节点都删除: MATCH (a:Person {name:'李'})-[r:FRIENDS]-() DELETE a,r 设置唯一标识:merge constraint ON (cc:Table) ASSERT cc.table_id IS UNIQUE 删除关系:MATCH ()-[r:USED_IN]->()DELETE r 2.血缘关系建模与查询 数据模型设计: Database: 数据库 Table: 数据表 Field: 字段 Task: 处理任务 关系类型: BELONGS_TO: 归属关系 READ_FROM: 读取关系 GENERATES: 生成关系 创建: 创建数据库节点 merge (sales:Database {name:'db1'}) 创建表节点(顶点) merge (sales:Table {table_id: '1',name:'source', database: 'db1'}) merge (sales:Table {table_id: '2',name:'sink', database: 'db2'}) 创建任务节点 merge (a:TaskType {taskid:'1',name: 'task_1',sourceTables:'source',sinkTables:'sink'}) 创建字段节点 merger(t:Field{id:'1',name:'id',cname:'标识',type:'int'}) merger(t:Field{id:'2',name:'name',cname:'字段名',type:'String'}) 创建表与数据库之间的关系 match(d:Database {name:'db1'}),(t:Table{name:'source'}) merger(d)<-[:BELONGS_TO]-(t) 创建任务与表之间的关系 Task 1: sales_data, customer_data -> order_data match (sales:Table {table_id: '1'}),(task1:Task {name: 'task_1'}),(s:Table {table_id: '2'}) merger (sales)<-[:READ_FROM {name: '读取'}]-(task1)-[:GENERATES {name: '生成',formulas:'name=oname'}]->(s) 创建表与字段之间的关系 match(f:Field{id:'1'),(t:Table {table_id: '1') merger(f)-[:BELONGS_TO]->(t) 查询: 查询字段级血缘 match (target_field:Field {name: 'name'})-[:BELONGS_TO]->(b) RETURN source_field.name AS source_field, b.name AS tablename 查询N度上下游关系 match path=(:Table {name: 'source'})-[*..3]-(:Table) RETURN nodes(path), relationships(path) 查询特定任务的输入输出 match (task:Task {name: 'ETL_Task_1'})-[r]->(entity) RETURN entity.name AS related_entity, type(r) AS relationship_type 统计数据表血缘深度 match (t:Table) WITH t, size((t)<-[:GENERATES*]-(:Table)) AS depth ORDER BY depth DESC RETURN t.name, depth ========================== CALL apoc.load.jdbc( 'jdbc:mysql://localhost/db?user=root&password=root&useUnicode=true&characterEncoding=utf8', 'select * from users_copy' ) YIELD row MERGE (n:User {uuid: row.uuid}) // 使用MERGE避免重复 ON CREATE SET n.user_id = row.user_id, n.name = row.name ON MATCH SET n.user_id = row.user_id, n.name = row.name // 可选:更新已有节点 RETURN count(n) AS importedCount; 3.JavaAPI 操作neo4jNeo4j的连接参数 public static final String NEO4J_URL = "neo4j://192.168.3.202:37687"; public static final String NEO4J_USER = "neo4j"; public static final String NEO4J_PASSWORD = "bigdata_root"; 连接:GraphDatabase.driver(dbUri, AuthTokens.basic(dbUser, dbPassword)) 4.spark 操作neo4j SparkSession.builder .config("neo4j.url", url) .config("neo4j.authentication.basic.username", username) .config("neo4j.authentication.basic.password", password) .config("neo4j.database", dbname) .getOrCreate() // 写入Neo4j val df = List( ("John", "Doe", 42), ("Jane", "Doe", 40) ).toDF("name", "surname", "age") df.write .format("org.neo4j.spark.DataSource") .mode(SaveMode.Overwrite) .option("labels", "Person") .option("node.keys", "name,surname") .save() // 从 Neo4j 中读取节点 spark.read .format("org.neo4j.spark.DataSource") .option("labels", "Person") .load() .show() spark.read .format("org.neo4j.spark.DataSource") .option("labels", ":Person") .load() .show() // spark.read .format("org.neo4j.spark.DataSource")//Spark 连接neo4j连接器 .option("relationship", "BOUGHT")//读取的关系 .option("relationship.source.labels", ":Customer")//起始节点 .option("relationship.target.labels", ":Product") //目标节点 .load() .show() 二. Seatunnel操作指南 Seatunnel(原Waterdrop)是腾讯开源的分布式数据集成平台,支持海量数据的实时/离线同步与处理。 核心特性包括: 1. 多源数据接入(如MySQL、Kafka、HDFS等) 2. 低代码配置化开发,支持SQL和脚本 3. 分布式架构,高吞吐低延迟 4. 内置数据转换、清洗能力 Seatunnel操作指南 //在读取HTTP网页数据get(无传参)的时候怎么写 //在读取HTTP网页数据POST(有传参) 的时候怎么写 执行任务:sh /opt/soft/seatunnel/apache-seatunnel-2.3.5/bin/seatunnel.sh --config aa.conf 三. Trino操作指南 Trino(原名PrestoSQL)是分布式SQL查询引擎,专为交互式分析查询设计。 核心特点: 1. 支持跨多数据源(如Hive、MySQL、Kafka)联邦查询 2. MPP架构,毫秒级响应PB级数据 3. 完全开源,社区活跃 4. 兼容ANSI SQL标准 四。Apache Paimon 是一个高性能的数据湖存储系统,旨在支持批处理和流处理 五。FlinkCDC 是一个 MySQL数据同步 CREATE TABLE if not exists mysql_user ( id STRING, name STRING, birth STRING, gender STRING, PRIMARY KEY (`id`) NOT ENFORCED ) WITH ( 'connector'= 'mysql-cdc', 'hostname'= '192.168.0.1', 'port'= '3306', 'username'= 'user', 'password'='password', 'server-time-zone'= 'Asia/Shanghai', 'debezium.snapshot.mode'='initial', 'database-name'= 'bigdata1', 'table-name'= 'user' ); 完善文档
最新发布
07-04
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值