我想在elasticsearch中使用通配符查询url。我正在使用elasticsearch 2.3.0

时间:2016-05-06 22:19:23

标签: elasticsearch pattern-matching wildcard

我的索引如下:

GET pibtest1/_search

{
  "took": 5,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "failed": 0
  },
  "hits": {
    "total": 11,
    "max_score": 1,
    "hits": [
      {
        "_index": "pibtest1",
        "_type": "SearchTech",
        "_id": "_update",
        "_score": 1,
        "_source": {
          "script": "ctx._source.remove(\"wiki_collection\")"
        }
      },
      {
        "_index": "pibtest1",
        "_type": "SearchTech",
        "_id": "http://www.searchtechnologies.com/bundles/jquery?v=gOdOgfykTFJnypePAvGweyMPwl-krhx8ntIhefPKelg1",
        "_score": 1,
        "_source": {
          "extension": {
            "X-Parsed-By": "org.apache.tika.parser.DefaultParser",
            "Content-Encoding": "ISO-8859-1",
            "resourceName": "http://www.searchtechnologies.com/bundles/jquery?v=gOdOgfykTFJnypePAvGweyMPwl-krhx8ntIhefPKelg1"
          },
          "keywords": "keywords-NOT-PROVIDED",
          "default_collection": true,
          "wiki_collection": false,
          "description": "description-NOT-PROVIDED",
          "connectorSpecific": {
            "discoveredBy": "http://www.searchtechnologies.com/",
            "xslt": "false",
            "pathFromSeed": "E",
            "md5": "OKTGVLEWTE5V4PWXUBM2RK3KMQ"
          },
          "title": "Title-NOT-PROVIDED",
          "url": "http://www.searchtechnologies.com/bundles/jquery?v=gOdOgfykTFJnypePAvGweyMPwl-krhx8ntIhefPKelg1",
          "remove": "wiki_collection",
          "UD": "http://www.searchtechnologies.com/bundles/jquery?v=gOdOgfykTFJnypePAvGweyMPwl-krhx8ntIhefPKelg1",

现在我想使用通配符查询来搜索包含某些模式的少数网址(例如。[over.match.ref]

这是我的通配符查询:

GET pibtest1/_search

    {
      "query": {
        "wildcard": {
          "url": {
            "value": "http://www.searchtechnologies.com/bundles*"
          }
        }
      }
    }

我正在使用" *"与任何字符序列匹配的通配符。但我没有得到任何结果。我的输出如下:

{
  "took": 11,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "failed": 0
  },
  "hits": {
    "total": 0,
    "max_score": null,
    "hits": []
  }
}

我希望我的结果包含与此匹配的网址" Working Example"图案。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

根据评论,您的网址字段是已分析的字段。因此,当您插入数据时,数据将被标记为["www.searchtechnologies.com", "v", "jquery", "gOdOgfykTFJnypePAvGweyMPwl", ...]。所以你的查询不匹配这个字段。

  • 您应该删除索引。
  • 插入映射并指定url字段为未分析{"索引":" not_analyzed"}
  • 插入您的数据。
  • 运行通配符查询。

如果您不想删除索引,因为停机检查:https://www.elastic.co/blog/changing-mapping-with-zero-downtime