我将 URL 作为字段存储在 Elasticsearch 中。但是,我想只过滤在url
.
例如。
我希望我的搜索结果有
http://any-subdomain.example.com
但我不希望结果有
https://www.example.com
这在 Elasticsearch 查询中可行吗?
我将 URL 作为字段存储在 Elasticsearch 中。但是,我想只过滤在url
.
例如。
我希望我的搜索结果有
http://any-subdomain.example.com
但我不希望结果有
https://www.example.com
这在 Elasticsearch 查询中可行吗?
您是否尝试过query_string
查询?例如,我用于 Twitter 数据,如下所示:
GET /twitter2/tweet/_search
{
"query": {
"query_string": {
"default_field": "entities.media.url",
"query": "https\\:\\/\\/t.co\\/* AND -https\\:\\/\\/t.co\\/6*"
}
},
"_source": ["entities.media.url"]
}
对于这个搜索我的映射:
PUT /twitter2/tweet/_mapping
{
"properties": {
"entities": {
"properties": {
"media": {
"properties": {
"url": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
}
}
您可以针对您的案例使用以下查询:
GET /your-index/your-type/_search
{
"query": {
"query_string": {
"default_field": "url",
"query": "http\\:\\/\\/*.example.com AND -http\\:\\/\\/www.example.com"
}
}
}
url
注意:您应该知道,如果在将数据索引为和时使用某些东西来处理,您可以更快地获得结果host
。使用 elastic 5.x,您可以使用摄取节点来像这样操作您的数据。我将尝试为此创建一个管道,但您可以查看文档以获取更多信息