0

我将 URL 作为字段存储在 Elasticsearch 中。但是,我想只过滤在url.

例如。

我希望我的搜索结果有

http://any-subdomain.example.com

但我不希望结果有

https://www.example.com

这在 Elasticsearch 查询中可行吗?

4

1 回答 1

1

您是否尝试过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,您可以使用摄取节点来像这样操作您的数据。我将尝试为此创建一个管道,但您可以查看文档以获取更多信息

于 2017-02-05T10:21:34.003 回答