在Elasticsearch中按类型搜索IP数据类型

时间:2016-11-14 16:00:06

标签: elasticsearch full-text-search ipv4

我们目前正在UI中为索引中的某些字段添加“搜索”类型。

对于字符串字段,Elasticsearch的功能允许多种方式执行此操作,例如:通过match_phrase_prefix查询分析的标记或索引期间的ngrams。

然而,由于IPv4-Addresses在内部为stored as long,因此就我看来,在它们上进行通配符或前缀搜索并不容易。

可以使用范围查询来搜索IP范围,但我宁愿让用户输入" 118"并显示" 168.1.118.32"的匹配项以及" 118.43.119.4"和" 1.1.1.118"。

是否有内置方法来执行此类查询?或者我们是否需要将字段分别存储为分析字符串?

1 个答案:

答案 0 :(得分:0)

经过一番调查,我们使用multi field两次存储IP地址,一次作为普通IP类型,第二次作为分析值,我们将IP分成4个八位字节,这样我们就可以了单独搜索这些部分。

在模板中,我们使用以下模式在写入索引时分割值:

   <tr><td>Manger Id</td><td>Manger Name</td></tr>
   <tr ng-repeat="x in names track by $index">
        <td>{{ x.m_id }}</td>
        <td>{{ x.m_name }}</td>
   </tr>
相关问题