63.文件系统进行数据建模以及文件搜索

主要知识点:

  • 对类似文件系统这种的有多层级关系的数据进行建模
  • 对上述模型数据进行搜索

一、文件系统数据构造

1、新建index,并自定义analyzer

新建一个index,自定义一个名为paths的analyzer,这个analyzer所用的分词器是path_hierarchy。语法:

PUT /fs

{

"settings": {

"analysis": {

"analyzer": {

"paths": {

"tokenizer": "path_hierarchy"

}

}

}

}

}

2、查看分词器:

GET /fs/_analyze

{

"text":"/a/b/c/d",

"analyzer": "paths"

}

path_hierarchy tokenizer会把/a/b/c/d这样一个路径分成
: /a/b/c/d, /a/b/c, /a/b, /a 这四个路径

3、新建type的mapping

新建一个名为file的type,其中path所用的分词器是paths

PUT /fs/_mapping/file

{

"properties": {

"name": { "type": "keyword"},

"path": { "type": "keyword",

"fields": {"tree": { "type": "text","analyzer": "paths"}}

}

}

}

4、插入数据

PUT /fs/file/1

{

"name": "README.txt",

"path": "/workspace/projects/helloworld",

"contents": "这是我的第一个elasticsearch程序"

}

从这里也可以看出,新建的mapping和插入的数据可以不一一对应,本例中新建索引时没有建contents的mappings,但是在插入数据时插入了这个数据也不会报错。

二、对文件系统执行搜索

1、在特定目录下查找特定文件

文件搜索需求:查找一份,内容包括elasticsearch,在/workspace/projects/hellworld这个目录下的文件

GET /fs/file/_search

{

"query": {

"bool": {

"must": [{"match": {"contents": "elasticsearch"}},

{"constant_score": {"filter": {"term": {"path": "/workspace/projects/helloworld"}}}} ]

}

}

}

执行结果:

"hits": [

{

"_index": "fs",

"_type": "file",

"_id": "1",

"_score": 1.284885,

"_source": {

"name": "README.txt",

"path": "/workspace/projects/helloworld",

"contents": "这是我的第一个elasticsearch程序"

}

}

]

}

}

2、在指定目录下查找包含特定名称的所有的文件

搜索需求2:搜索/workspace目录下,内容包含elasticsearch的所有的文件

GET /fs/file/_search

{

"query": {

"bool": {

"must": [{"match": {"contents": "elasticsearch"}},

{"constant_score": {"filter": {"term": {"path.tree": "/workspace"}}}}]

}

}

}

为什么是path.tree

在本例中,上述两次搜索结果是一样的。

原文地址:https://www.cnblogs.com/liuqianli/p/8542127.html

时间: 2024-08-30 13:12:25

63.文件系统进行数据建模以及文件搜索的相关文章

[Elasticsearch] 数据建模 - 处理关联关系

数据建模(Modeling Your Data) ES是一头不同寻常的野兽,尤其是当你来自SQL的世界时.它拥有很多优势:性能,可扩展性,准实时的搜索,以及对大数据的分析能力.并且,它很容易上手!只需要下载就能够开始使用它了. 但是它也不是魔法.为了更好的利用ES,你需要了解它从而让它能够满足你的需求. 在ES中,处理实体之间的关系并不像关系型存储那样明显.在关系数据库中的黄金准则 - 数据规范化,在ES中并不适用.在处理关联关系,嵌套对象和父子关联关系中,我们会讨论几种可行方案的优点和缺点.

Django博客开发-数据建模与样式设定

开发流程介绍 之前Django的学习过程当中已经把基本Django开发学完了,现在以Django 的博客项目完成一遍课程的回顾和总结.同时来一次完整开发的Django体验. 一个产品从研究到编码我们要经历以下的过程: 博客开发需求分析与建模 需求分析 本次项目完成的是一个博客的项目,博客主要目的是为了分享个人的技术,进行技术积累. 主要是发布文章日志.但是也需要有评论和互动.需要完成以下功能点: 1.文章的发布.展示.修改.删除. 2.文章评论 3.读者互动 4.图片管理 概要设计 我们对上面的

小蚂蚁学习Linux(4)——链接命令ln、文件搜索命令locate、whereis和which

链接命令ln    (取自link之意) ln  [源文件]    [目标文件]    功能:生成链接文件.    -s 创建软连接 ,不加是创建硬链接 硬链接的特征: 1. 拥有相同的i节点和存储block快,可以看做是同一个文件. 2. 可通过i节点识别 3. 不能跨分区 4. 不能针对目录使用 备注:硬链接只要不把所有文件名删除,删除其中一个不影响其他文件名的使用. 需要注意的是,不建议只用硬链接: 1. 硬链接太过隐蔽,只能通过查看inode节点id号识别 2. 自身的限制也比较多. 替

Everything(速度快的文件搜索软件) 1.4.1.801b 汉化绿色版

软件名称: Everything(速度快的文件搜索软件) 软件语言: 简体中文 授权方式: 免费软件 运行环境: Win7 / Vista / Win2003 / WinXP 软件大小: 2.0MB 图片预览: 软件简介: Everything是一个文件搜索软件,特点是速度快,可以瞬间搜索到你需要的文件,软件体积小巧.绿色免安装.免费 注意: 1.此软件仅支持 NTFS 文件系统. 2.FAT32转换为NTFS时请谨慎操作,避免因为断电等意外事件导致数据损失.慎重!!! 中文设置方法: Tool

《MySQL Workbench数据建模与开发》

<MySQL Workbench数据建模与开发> 基本信息 原书名:MySQL Workbench:Data Modeling & Development 原出版社: McGraw-Hill Osborne Media 作者: (美)麦克劳克林(McLaughlin, M.) 译者: 张骏温 出版社:清华大学出版社 ISBN:9787302363712 上架时间:2014-6-5 出版日期:2014 年6月 开本:16开 页码:368 版次:1-1 所属分类:计算机 > 数据库

Linux文件系统十问---深入理解文件存储方式

Linux文件系统十问 --关于文件系统,你知道吗? 文章来源:文件系统十问 关于文件系统,相信大家都不陌生.身为攻城狮的我们几乎天天都会与之打交道,但是细深剖一下,其中又有多少是我们理解深度不够的呢.那么让我们一起来看一下下面这一组Linux文件系统相关的问题吧: 1.机械磁盘随机读写时速度非常慢,操作系统是采用什么技巧来提高随机读写的性能的? 2.touch一个新的空文件占用磁盘空间吗? 占用的话占用多少? 3.新建一个空目录占用磁盘空间吗?占用多少?和新建一个文件相比,哪个占用的更大? 4

[转] [Elasticsearch] 数据建模 - 处理关联关系(1)

[Elasticsearch] 数据建模 - 处理关联关系(1) 标签: 建模elasticsearch搜索搜索引擎 2015-08-16 23:55 6958人阅读 评论(0) 收藏 举报 分类: Search(43) Elasticsearch(43) 目录(?)[+] 数据建模(Modeling Your Data) ES是一头不同寻常的野兽,尤其是当你来自SQL的世界时.它拥有很多优势:性能,可扩展性,准实时的搜索,以及对大数据的分析能力.并且,它很容易上手!只需要下载就能够开始使用它了

QuickBI助你成为分析师-数据建模(一)

摘要: 创建数据集是报表分析的基础,合理建模可以达到事半功倍的效果哦! 产品核心流程第二步为创建数据集,进行数据建模,如果说数据是海,那么创建数据集并合理建模就是划船的浆,有了浆才能在数据的海洋里畅游.目前创建数据集有两种方式:(1)数据表直接创建数据集 (2)通过自定义sql创建数据集,以实现初步建模. 创建数据集: (1)直接新建数据集: 如下图,在数据源列表页,找到目标表,点击创建数据集按钮并选择存放文件夹 即可新建,新建后自动进入数据集界面. (2)自定义sql创建数据集: 目前产品支持

/proc文件系统的特点和/proc文件的说明

/proc文件系统是一种特殊的.由软件创建的文件系统,内核使用它向外界导出信息,/proc系统只存在内存当中,而不占用外存空间. /proc下面的每个文件都绑定于一个内核函数,用户读取文件时,该函数动态地生成文件的内容.也可以通过写/proc文件修改内核参数 /proc目录下的文件分析  /proc/$pid 关于进程$pid的信息目录.每个进程在/proc 下有一个名为其进程号的目录.例:$>strings -f /proc/[0-9]*/cmdline /proc/cmdline  内核启动