elasticsearch正则表达式查询包含正斜杠

时间:2016-07-12 04:43:29

标签: elasticsearch

我在弹性搜索中有以下记录

{
  "label": "/home and garden/home furnishings",
  "score": "0.731174"
},
{
  "label": "/travel/vacation rentals",
  "score": "0.601932"
},
{
  "label": "/travel/vacation rentals",
  "score": "0.657443"
},
{
  "label": "/home and garden/gardening and landscaping/yard and patio",
  "score": "0.707792"
}

现在我想进行查询以获取以" / travel"开头的所有分类标签。我只希望数据直到第三个正斜杠

示例如果我们采取

 "label": "/home and garden/gardening and landscaping/yard and patio"

然后我只想要数据

/home and garden/gardening and landscaping/

我尝试了一些部分匹配的查询,如:

{
 "_source":["taxonomy"],
  "from" : 0,
 "size" : 100,
 "query": {
     "regexp":{
    "taxonomy.label":{
        "value":"/travel.*",
        "boost":1.2
    }
}
}

}

但是,一旦我给斜杠它停止给出任何结果,它似乎没有采用正斜线,我想知道这是否可能,如果是,那么我如何继续这个查询?

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

你有两个问题。首先是查询以travel开头的文档。
为此你可以试试ElasticSearch的{​​{1}}。您可以阅读更多here

这样您就可以以“
”的形式存储路径“path_hierarchy/travel/vacation rentals
/travel

之后你可以对那个领域进行直接匹配查询。

对于第二部分,您可以尝试脚本,但要小心它们,因为如果暴露给外部世界,启用内联脚本可能会导致一些不道德的访问。

使用保存在特定/travel/vacation rentals文件夹中的脚本可以安全地使用。您可以阅读有关脚本的更多信息以及如何使其安全here