在使用 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 数据类型及其搜索相关推荐

  1. 如何使用Elasticsearch构建强大的搜索和分析应用程序(2023年最新ES新手教程)

    1.Elasticsearch 非常强大的开源搜索引擎,可以帮助我们从海量数据中快速找到需要的内容 什么是elasticsearch 一个开源的分布式搜索引擎,可以用来实现搜索.日志统计.分析.系统监 ...

  2. 【ElasticSearch】大数据搜索选开源还是商业软件?ElasticSearch 对比 Splunk

    1.概述 转载:大数据搜索选开源还是商业软件?ElasticSearch 对比 Splunk述 本文就架构,功能,产品线,概念等方面就ElasticSearch和Splunk做了一下全方位的对比,希望 ...

  3. 在ElasticSearch之下(图解搜索的故事)

    http://www.cnblogs.com/richaaaard/p/5226334.html 摘要 先自上而下,后自底向上的介绍ElasticSearch的底层工作原理,试图回答以下问题: 为什么 ...

  4. ElasticSearch 2 (16) - 深入搜索系列之近似度匹配

    ElasticSearch 2 (16) - 深入搜索系列之近似度匹配 摘要 标准的全文搜索使用TF/IDF处理文档.文档里的每个字段或一袋子词.match 查询可以告诉我们哪个袋子里面包含我们搜索的 ...

  5. 用Elasticsearch构建电商搜索平台(有赞)

    随着互联网数据规模的爆炸式增长,如何从海量的历史,实时数据中快速获取有用的信息,变得越来越有挑战性. 电商数据系统主要类型 一个中等的电商平台,每天都要产生百万条原始数据,上亿条用户行为数据.一般来说 ...

  6. 使用ElasticSearch进行可扩展搜索

    当我上高中时, google只是一个名词,代表了一个非常庞大的数字. 今天,我们有时将google用作动词,与在线浏览和搜索同义,并且我们也用它来指代同名公司. 通常会调用" Papa Go ...

  7. 使用ElasticSearch进行文档搜索

    1.ElasticSearch 概念特点 全文搜索是对非结构化数据的一种搜索方式,所谓非结构化数据是指相对于结构化数据(如数据库)来说长度不固定或无固定格式的数据,例如文档.邮件等. 对非结构化数据的 ...

  8. 使用Elasticsearch快速搭建食谱搜索系统

    搜索是一个网站的基础功能,一个好的搜索系统可以直接促进页面访问量的提升,目前流行的搜索系统方案都是基于开源的Elasticsearch和Solr搭建.本文以食谱搜索场景为例,介绍如何利用阿里云Elas ...

  9. 用ElasticSearch搭建自己的搜索和分析引擎

    导语:互联网产品中的检索功能随处可见.当你的项目规模是百度大搜|商搜或者微信公众号搜索这种体量的时候,自己开发一个搜索引擎,加入各种定制的需求和优化,是非常自然的事情.但如果只是普通的中小型项目甚至创 ...

  10. Elasticsearch 字段数据类型

    Elasticsearch 可以支持单个 document 中含有多个不同的数据类型. 核心数据类型(Core datatypes) 字符型(String datatype):string(这个是2. ...

最新文章

  1. C#经典再现——《C#本质论》
  2. 跟一个刚毕业不久的码农聊天后被凡尔赛了
  3. mysql 表损坏_MYSQL数据表损坏的原因分析和修复方法小结(推荐)
  4. Linux运维之道之网络基础学习1.3
  5. python和opencv人脸表情识别_使用OpenCV和Python进行人脸识别
  6. masm5.0与masm32
  7. 智慧消防:如何利用智能化手段,精准防控消防风险?
  8. 网页格式html转换成pdf的方法,将网页内容转化为PDF的三种方法
  9. CAXA实体设计 2020 在草图中怎么快速选择与某一曲线相连的曲线?
  10. html下拉菜单的写法
  11. 《经济学原理》——读书笔记(一)
  12. 贝塞尔插值曲线绘制软件设计
  13. 深信服EDR产品线实施遇到的问题
  14. Rimworld Mod制作教程12 集群AI机制介绍
  15. 公有云 私有云及架构
  16. USB 输入,集成OVP过压保护锂电池充电芯片产品-19号电路板
  17. 「干货」Snort使用手册「详细版」
  18. 别人在你眼中是什么样,你就是什么样
  19. MyBatis之Base64加密数据源
  20. 资料:《新概念英语》旧版(第四册)原文及全文翻译

热门文章

  1. 网络协议 终章 - GTP 协议:复杂的移动网络
  2. 人工智能中的图像识别技术
  3. 一种电阻电感电容自动识别及阻抗值测量电路
  4. 用Python实现一个电影订票系统
  5. JAVA观察者模式(买彩票案例)
  6. 2020-10-27
  7. 【iOS越狱开发】iOS越狱步骤1之环境搭建
  8. android apk自动安装包下载,Android 实现apk文件下载并自动安装
  9. 免费好用的OCR文字识别软件推荐
  10. c语言编程悬臂梁受力分析,悬臂梁受力的分析.doc