我们目前正在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"。
是否有内置方法来执行此类查询?或者我们是否需要将字段分别存储为分析字符串?
答案 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>