RedisJSON和Python 3:JSON.get和ft('index').search(查询('@ orig_ip:{192\.168\.210\.27}'))未返回任何结果(redis中的匹配条目)

ddhy6vgd  于 2022-11-21  发布在  Redis
关注(0)|答案(1)|浏览(152)

我 是 redis 的 新手 , 我 创建 了 一 个 索引 , 并 试图 摄取 Zeek Logging Data , 为 多 个 字段 创建 一 个 索引 , 然后 在 该 索引 中 搜索 字段 。 在 我 的 一生 中 , 当 搜索 @orig_ip 名称 或 使用 JSON.GET 来 重试 任何 与 id.* 相关 的 字段 时 , 我 无法 获得 任何 返回 值 。

    • 更新 : 我 在 更 多 的 故障 排除 后 发现 了 这 一 点 , 并 在 这里 更新 , 以 帮助 任何 其他 与 此 问题 斗争 的 人 。 * *

# # 以下 是 我 创建 索引 的 错误 代码 :

# Options for index creation
index_def = IndexDefinition(
                index_type=IndexType.JSON,
                prefix = ['uid:'],
                score = 0.5,
                score_field = 'doc_score'
)

# Schema definition
schema = (  
            TagField('$.orig_l2_addr', as_name='orig_mac'),
            TagField('$.id.orig_h', as_name='orig_ip'), #Wrong field path
            TagField('$.id.resp_h', as_name='resp_ip'), #Wrong field path
            NumericField('$.orig_bytes', as_name='orig_bytes'),
            NumericField('$.resp_bytes', as_name='resp_bytes'),
            NumericField('$.ts', as_name='timestamp')
)

r.ft('py_conn_idx').create_index(schema, definition = index_def)

中 的 每 一 个

# # 以下 是 我 使用 上述 错误 schema 得到 的 结果 ( 没有 结果 )

第 一 次

# # 更新 : 正在 使用 schema 定义 :

因此 , 即使 Zeek 只 在 字段 名 中 使用 了 . , 而 不是 使用 它 来 创建 对象 , 但 字段 名 中 的 . 才 是 导致 查询 失败 的 罪魁祸首 。 我 需要 访问 索引 的 字段 , 如下 所 示 :

# Schema definition
schema = (  
            TagField('$.orig_l2_addr', as_name='orig_mac'),
            TagField('$.["id.orig_h"]', as_name='orig_ip'), #Fixed field reference
            TagField('$.["id.resp_h"]', as_name='resp_ip'), #Fixed field reference
            NumericField('$.orig_bytes', as_name='orig_bytes'),
            NumericField('$.resp_bytes', as_name='resp_bytes'),
            NumericField('$.ts', as_name='timestamp')
)

格式
使用 此 schema 重新 创建 索引 后 , 我 的 查询 得到 了 结果 :

Results for "@orig_ip:{192\.168\.210\.27}":
Document {'id': 'uid:CPvYfTI4Zb1Afp2l5',....

格式
感谢 这个 stackoverflow 问题 最终 引导 我 找到 了 麻烦 的 原因 :How to get objects value if its name contains dots? 格式

11dmarpk

11dmarpk1#

将 此 答案 放在 此处 , 以便 将 此 问题 标记 为 有 答案 。 请 参阅 上面 更新 的 问题/代码 !

相关问题