如何在Elasticsearch中存储URL以便快速访问?

时间:2018-02-15 08:04:46

标签: elasticsearch

我想将Elasticsearch用于网站,并且需要通过网页的URL字符串快速检索文档 - 实际路径(例如/shoes/sneakers/nike)。路径是独一无二的。

我想到了以下解决方案:

  1. 以字符串形式存储,编入索引,未分析
  2. 存储在_id字段
  3. 哪一个是更好的解决方案,是否有更好的方法?

    谢谢!

2 个答案:

答案 0 :(得分:1)

您可以将url字段存储为关键字数据类型,并使用以下查询来获取结果。

https://www.elastic.co/guide/en/elasticsearch/reference/master/keyword.html

POST index/_search
{
    "query": {
        "term": {
            "url": "/shoes/sneakers/nike"
        }
    }
}

如果您将其存储为文本数据类型,那么elasticsearch将自动为您创建关键字字段,您可以使用以下查询来获取结果

由Elasticsearch创建的映射

"url": {
    "type": "text",
    "fields": {
      "keyword": {
        "type": "keyword",
        "ignore_above": 256
      }
    }
}

查询搜索

POST index/_search
{
    "query": {
        "term": {
            "url.keyword": "/shoes/sneakers/nike"
        }
    }
}

答案 1 :(得分:0)

{
    "query": {
        "match_phrase": {
            "url": "/shoes/sneakers/nike"
        }
    }
}

您需要使用其值存储url字段。这个match_phrase将解决您的问题。