Elasticsearch:IP 数据类型及其搜索
在使用 Elasticsearch 搜索 IP 地址时,我们可以把数据类型定义为 IP 数据类型。这样我们可以针对 IP 地址进行搜索。这种 IP 地址可以是 IPv4 或者是 IPv6 的形式。
现在假设我们导入一个如下的数据到 Elasticsearch 中:
PUT my-index/_doc/1
{"ip_addr": "192.168.1.1"
}
在没有定义数据类型的情况下, Elasticsearch 会把上面的字段 ip_add 映射到一个 text 及 keyword 的类型的数据上:
GET my-index/_mapping
上面命令显示的结果为:
{"my-index" : {"mappings" : {"properties" : {"ip_addr" : {"type" : "text","fields" : {"keyword" : {"type" : "keyword","ignore_above" : 256}}}}}}
}
假如我们想对上面的数据进行如下的搜索:
GET my-index/_search
{"query": {"term": {"ip_addr": "192.168.0.0/16"}}
}
针对上面的搜索,我稍微做一下解释:对于上面的 IPv4 的 IP 地址含有4个 bytes,而每个 byte 含有8个 digits。在上面的 /16 即表示前面的 16 位的 digits,也即 192.168。我们可以这么说任何一个 IP 地址位于 192.168.0.0 至 192.168.255.255 都在这个范围内。
上面的搜索的结果是:
{"took" : 0,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 0,"relation" : "eq"},"max_score" : null,"hits" : [ ]}
}
也就是找不到任何的结果。这是什么原因呢?
就其原因,是因为我们没有正确地把 IP 的数据类型定义为 IP 数据类型。我们重新来定义这个索引的 mapping:
DELETE my-indexPUT my-index
{"mappings": {"properties": {"ip_addr": {"type": "ip"}}}
}PUT my-index/_doc/1
{"ip_addr": "192.168.1.1"
}
我们按照上面的步骤来重新建立索引,并导入文档。我们在按照如下的方法来进行搜索:
GET my-index/_search
{"query": {"term": {"ip_addr": "192.168.0.0/16"}}
}
上面的命令显示的结果为:
{"took" : 0,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 1,"relation" : "eq"},"max_score" : 1.0,"hits" : [{"_index" : "my-index","_type" : "_doc","_id" : "1","_score" : 1.0,"_source" : {"ip_addr" : "192.168.1.1"}}]}
}
这次,显然我们搜索到我们需要的文档了,这是因为 192.168.1.1 是属于 IP 地址范围 192.168.0.0/16 的。我们可以通过这样的方法搜索属于一个 IP 范围的日志文件供我们查询。
Elasticsearch:IP 数据类型及其搜索相关推荐
- 如何使用Elasticsearch构建强大的搜索和分析应用程序(2023年最新ES新手教程)
1.Elasticsearch 非常强大的开源搜索引擎,可以帮助我们从海量数据中快速找到需要的内容 什么是elasticsearch 一个开源的分布式搜索引擎,可以用来实现搜索.日志统计.分析.系统监 ...
- 【ElasticSearch】大数据搜索选开源还是商业软件?ElasticSearch 对比 Splunk
1.概述 转载:大数据搜索选开源还是商业软件?ElasticSearch 对比 Splunk述 本文就架构,功能,产品线,概念等方面就ElasticSearch和Splunk做了一下全方位的对比,希望 ...
- 在ElasticSearch之下(图解搜索的故事)
http://www.cnblogs.com/richaaaard/p/5226334.html 摘要 先自上而下,后自底向上的介绍ElasticSearch的底层工作原理,试图回答以下问题: 为什么 ...
- ElasticSearch 2 (16) - 深入搜索系列之近似度匹配
ElasticSearch 2 (16) - 深入搜索系列之近似度匹配 摘要 标准的全文搜索使用TF/IDF处理文档.文档里的每个字段或一袋子词.match 查询可以告诉我们哪个袋子里面包含我们搜索的 ...
- 用Elasticsearch构建电商搜索平台(有赞)
随着互联网数据规模的爆炸式增长,如何从海量的历史,实时数据中快速获取有用的信息,变得越来越有挑战性. 电商数据系统主要类型 一个中等的电商平台,每天都要产生百万条原始数据,上亿条用户行为数据.一般来说 ...
- 使用ElasticSearch进行可扩展搜索
当我上高中时, google只是一个名词,代表了一个非常庞大的数字. 今天,我们有时将google用作动词,与在线浏览和搜索同义,并且我们也用它来指代同名公司. 通常会调用" Papa Go ...
- 使用ElasticSearch进行文档搜索
1.ElasticSearch 概念特点 全文搜索是对非结构化数据的一种搜索方式,所谓非结构化数据是指相对于结构化数据(如数据库)来说长度不固定或无固定格式的数据,例如文档.邮件等. 对非结构化数据的 ...
- 使用Elasticsearch快速搭建食谱搜索系统
搜索是一个网站的基础功能,一个好的搜索系统可以直接促进页面访问量的提升,目前流行的搜索系统方案都是基于开源的Elasticsearch和Solr搭建.本文以食谱搜索场景为例,介绍如何利用阿里云Elas ...
- 用ElasticSearch搭建自己的搜索和分析引擎
导语:互联网产品中的检索功能随处可见.当你的项目规模是百度大搜|商搜或者微信公众号搜索这种体量的时候,自己开发一个搜索引擎,加入各种定制的需求和优化,是非常自然的事情.但如果只是普通的中小型项目甚至创 ...
- Elasticsearch 字段数据类型
Elasticsearch 可以支持单个 document 中含有多个不同的数据类型. 核心数据类型(Core datatypes) 字符型(String datatype):string(这个是2. ...
最新文章
- C#经典再现——《C#本质论》
- 跟一个刚毕业不久的码农聊天后被凡尔赛了
- mysql 表损坏_MYSQL数据表损坏的原因分析和修复方法小结(推荐)
- Linux运维之道之网络基础学习1.3
- python和opencv人脸表情识别_使用OpenCV和Python进行人脸识别
- masm5.0与masm32
- 智慧消防:如何利用智能化手段,精准防控消防风险?
- 网页格式html转换成pdf的方法,将网页内容转化为PDF的三种方法
- CAXA实体设计 2020 在草图中怎么快速选择与某一曲线相连的曲线?
- html下拉菜单的写法
- 《经济学原理》——读书笔记(一)
- 贝塞尔插值曲线绘制软件设计
- 深信服EDR产品线实施遇到的问题
- Rimworld Mod制作教程12 集群AI机制介绍
- 公有云 私有云及架构
- USB 输入,集成OVP过压保护锂电池充电芯片产品-19号电路板
- 「干货」Snort使用手册「详细版」
- 别人在你眼中是什么样,你就是什么样
- MyBatis之Base64加密数据源
- 资料:《新概念英语》旧版(第四册)原文及全文翻译