2016-05-06 10 views
0

Mein Index wie folgt aussieht:Ich möchte eine Wildcard-Abfrage für die URL in Elasticsearch verwenden. Ich verwende Elasticsearch 2.3.0

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", 

Jetzt möchte ich eine Wildcard-Abfrage verwenden für einige URL zu suchen, die einige Muster enthält (. ZB für http://www.searchtechnologies.com/bundles)

Diese ist meine Wildcard-Abfrage:

Ich verwende "*" Wildcard, die eine beliebige Zeichenfolge entspricht. Aber ich bekomme keine Ergebnisse. Meine Ausgabe sieht wie folgt aus:

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

ich meine Ergebnisse wollen, dass diese URL enthalten, die dieses „http://www.searchtechnologies.com/bundles“ Muster übereinstimmt. Jede Hilfe wäre willkommen.

+0

Ist Ihr URL-Feld analysiert? – alpert

+0

@alpert Nein. Ich habe das Feld – Rose

+0

nicht analysiert. Das ist interessant, weil ich es nicht reproduzieren konnte. Können Sie das Mapping anzeigen? – alpert

Antwort

2

Basierend auf Kommentaren ist Ihr URL-Feld ein analysiertes Feld. Wenn Sie also Daten einfügen, werden die Daten als ["www.searchtechnologies.com", "v", "jquery", "gOdOgfykTFJnypePAvGweyMPwl", ...] in Token umgewandelt. Ihre Anfrage passt also nicht zu diesem Feld.

  • Sie sollten Ihren Index löschen.
  • Ein Mapping einfügen und url Feld als nicht analysiert angeben {"index": "not_analyzed"}
  • Fügen Sie Ihre Daten ein.
  • Wildcard-Abfrage ausführen.

Wenn Sie möchten nicht Ihren Index löschen, weil eine Ausfallzeit Prüfung: https://www.elastic.co/blog/changing-mapping-with-zero-downtime

+0

Danke. Ich habs. Ich werde mein Feld als "not_analyzed" markieren und dann Wildcard verwenden, um das Muster abzustimmen. – Rose