我正在尝试获取IP范围查询来处理一组文档,但没有得到任何结果.
映射(我都试过analyzed和not_analyzed):
"mappings": {
"addy": {
"properties": {
"add": {
"type": "ip",
"not_analyzed":"true"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
数据看起来像这样(许多实例具有不同的值)
"_source": {
"add": "192.168.1.15"
}
Run Code Online (Sandbox Code Playgroud)
现在,我去看官方的ES文档,但是没有IP范围的例子,但我在Git上找到了一个,但是没有用.它看起来如下:
"query": {
"query_string": {
"default_field": "add",
"query": "add:[192.168.1.5 TO 192.168.1.15]"
}
}
Run Code Online (Sandbox Code Playgroud)
当我胖的指法我的字段和地址时,上面提出了一些鼓励解析错误,但最终没有返回任何结果.
我也尝试过标准范围语法:
"filter": {
"range": {
"add": {
"from": "192.168.1.5",
"to": "192.168.1.25"
}
}
}
Run Code Online (Sandbox Code Playgroud)
哪个也没有返回任何结果.如何查询一系列IP地址?
该ip类型不进行任何not_analyzed设置,仅适用于字符串字段.无论如何,我已经能够像这样重建你的索引:
curl -XPUT localhost:9200/addies -d '{
"mappings": {
"addy": {
"properties":{
"add": { "type": "ip"}
}
}
}
}'
Run Code Online (Sandbox Code Playgroud)
然后我创建了几个这样的示例文档:
curl -XPUT localhost:9200/addies/addy/1 -d '{"add": "192.168.1.100"}'
curl -XPUT localhost:9200/addies/addy/2 -d '{"add": "192.168.1.101"}'
curl -XPUT localhost:9200/addies/addy/3 -d '{"add": "192.168.1.102"}'
curl -XPUT localhost:9200/addies/addy/4 -d '{"add": "192.168.1.110"}'
Run Code Online (Sandbox Code Playgroud)
最后,使用query_string查询我只能检索前三个文件,如下所示:
curl -XPOST localhost:9200/addies/addy/_search -d '{
"query": {
"query_string": {
"query": "add:[192.168.1.100 TO 192.168.1.102]"
}
}
}'
Run Code Online (Sandbox Code Playgroud)
更新:
请注意,以下range查询也可以正常工作并返回相同的结果:
curl -XPOST localhost:9200/addies/addy/_search -d '{
"query": {
"range": {
"add": {
"gte": "192.168.1.100",
"lte": "192.168.1.102"
}
}
}
}'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8005 次 |
| 最近记录: |