1
我们正在为用户界面中的索引中的某些字段添加搜索即用类型。Elasticsearch中IP数据类型的搜索类型
对于字符串字段,Elasticsearch的功能允许有多种方法来执行此操作,例如,通过match_phrase_prefix查询分析的标记或在编制索引期间通过ngram。
但是,由于IPv4地址内部为stored as long,因此在我看来,对它们执行通配符或前缀搜索并不容易。
可以使用范围查询搜索IP范围,但我宁愿让用户输入“118”并显示“168.1.118.32”以及“118.43.119.4”和“1.1”的匹配项.1.118" 。
是否有内置的方式来执行此类查询?或者我们是否需要将字段分别存储为分析后的字符串?
我没有这样做过,具有u考虑使用正则表达式ElasticSearch? https://www.elastic.co/guide/en/elasticsearch/reference/1.4/query-dsl-regexp-query.html – nafas
@nafas:谢谢,这似乎工作,但我不愿意使用这个,因为我们拥有数百万的文档,所以我期望使用正则表达式可以获得相当高的性能。对于字符串,我们使用前缀匹配或短语前缀匹配来避免昂贵的通配符和正则表达式匹配类型。 – centic
说实话,如果你有静态的前缀(开头没有任何通配符),你就不会有太大的表现。我没有在ElasticSearch中使用正则表达式,但在Solr中使用它,所以我期望类似的行为 – nafas