跳转到主要内容

Python工具,用于创建包含可用CLI模块信息的ElasticSearch数据库

项目描述

此存储库中的文件允许您创建一个包含可用CLI模块信息的 Elasticsearch 数据库。想法是我们有一个公共的 Kibana 仪表板,列出来自多个来源的CLI模块,因此有一个具有两种模式的脚本

‘提取’模式

从一组CLI模块(在一个或多个公共目录中)中提取JSON描述。

# ./ctk_cli_indexer.py extract --help
usage: ctk_cli_indexer.py extract [-h] [--json_filename JSON_FILENAME]
                                  base_directory [base_directory ...]

positional arguments:
  base_directory        directories (at least one) in which to search for CLI
                        module executables, or direct paths to executables

optional arguments:
  -h, --help            show this help message and exit
  --json_filename JSON_FILENAME, -o JSON_FILENAME

这应由提供CLI模块的站点管理员运行,想法是将生成的.json文件发布在一些网站上。

‘索引’模式

该脚本接受一个JSON文件(或一组CLI可执行文件)并更新一个Elasticsearch数据库。CLI模块的来源标识符作为第一个参数传递,脚本会负责删除数据库中的旧文档(已删除的CLI),同时也会维护每个CLI的最后更改时间戳(即不重新上传未更改的内容,并标记每次更改的CLI可执行文件的修改时间)。除了传递JSON文件外,还可以直接传递目录列表或CLI可执行文件。

# ./ctk_cli_indexer.py index --help
usage: ctk_cli_indexer.py index [-h] [--host HOST] [--port PORT]
                                source_name path [path ...]

positional arguments:
  source_name  identifier for the source (e.g. 'slicer' or 'nifty-reg') of
               this set of CLI modules (will be used to remove old documents
               from this source from the Elasticsearch index if they are no
               longer present)
  path         one or more directories in which to search for CLI module
               executables, paths to CLI executables, or (exactly one) JSON
               file as created by `extract` subcommand

optional arguments:
  -h, --help   show this help message and exit
  --host HOST  hostname elasticsearch is listening on (default: localhost)
  --port PORT  port elasticsearch is listening on (default: 9200)

此脚本应由cron作业(即由CTK管理员设置)运行,从定期提取上述提到的.json URL的脚本中运行,并更新中央数据库。然后,一个Kibana仪表板将为有兴趣的人提供一个关于来自多个站点的可用模块的概述。

系统需求

以下软件包必须安装到您的系统上

  • Python

  • pip(推荐安装)

  • Git(仅限开发者使用)

以下Python包如果没有安装将会自动安装(请参阅requirements.txt,在此列出以供您通过系统包管理器安装)

用户安装

使用

pip

(或

easy_install

)从

pypi

安装

pip install ctk-cli-indexer

开发者安装

首先下载源代码

git clone git://github.com/commontk/ctk-cli-indexer.git

要使用此模块,您必须安装一些外部Python包依赖项

cd ctk-cli-indexer
pip install -r requirements.txt

Elasticsearch配置

为了使用此代码,您必须能够访问一个正在运行的Elasticsearch服务器。本节将给出基本的入门指令。首先,下载最新稳定的elasticsearch和kibana tarball(logstash在这里不是必需的/使用的)。

Elasticsearch是用Java编写的,因此您基本上可以解压tarball并运行

bin/elasticsearch

,服务器应该运行在

http://localhost:9200/

(是的,您可以在浏览器中尝试这个URL,您应该会得到一些状态JSON)。默认位置也内置到索引脚本中,因此您可以立即开始索引。可以使用

http://localhost:9200/cli/cli/_search?pretty=1

来检查索引中是否有数据。

Kibana是一个纯基于浏览器的Web应用程序(基于客户端HTML和JS),因此您可以使用任何类型的HTTP服务器来提供文件,例如。

cd kibana-3.1.1/
python -m SimpleHTTPServer

这将使Kibana在

http://localhost:8000/

上运行。您甚至可以在浏览器中打开

kibana-x.y.z/index.html

而不需要任何HTTP服务器。在这种情况下,您可能需要编辑

config.js

以指向服务器,如下所示

elasticsearch: "http://localhost:9200",

这就完成了!如果在浏览器中看到欢迎仪表板,您就设置好了。请注意,您甚至可以在Kibana中存储仪表板;默认情况下,它们将存储在Elasticsearch中,因此您甚至不需要关心文件系统访问。

Kibana的初次使用

建议您从一个空白的仪表板开始(默认仪表板底部的链接)。首先,转到仪表板设置(右上角的齿轮图标)并在“索引”下选择“cli”作为默认索引,并在“预加载字段”下启用自动完成。

接下来,添加行(在仪表板设置中“行”选项卡),例如,一行高200px,一行高300px,第三行高500px。别忘了为每一行(特别是最后一行)按“创建行”,然后按“保存”。

在每一行中,都有一个(不可见的)12列布局,因此您现在想添加跨越3或4列的“小部件”。仅从“术语”小部件开始,尝试不同的字段(例如,“许可”),以及不同的视图选项(特别是,柱状图/饼图/表格样式)。

小部件支持交互式筛选,例如,点击特定术语以按许可/作者/来源/类别进行筛选;活动筛选器将列出,并可在顶部清除(确保该行未折叠)。还有一个搜索行,您可以在其中尝试输入关键字。

最后一行(我们特别将其设置得很高)是为了一个“表格”小部件(类似于示例仪表板),可以用于列出所有匹配的文档。

现在尝试各种选项,别忘了保存您的仪表板(右上角的软盘符号)。如果您在仪表板设置中的“控件”下启用“保存到 > 导出”和“从 > 本地文件加载”,您还可以将仪表板作为JSON下载/上传。此外,您可以将仪表板设置为默认/主页仪表板。在此存储库中,您还可以在文件 cli_dashboard.json 中找到示例仪表板。

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪一个,请了解更多关于 安装包 的信息。

源分布

ctk-cli-indexer-0.6.tar.gz (8.2 kB 查看哈希值)

上传时间