2016-09-15 3 views
0

Ich habe ein kleines Problem, ich beginne mit Elasticsearch zu arbeiten und habe dieses Problem, wenn ich mit meinem Curl-Skript teste.Elasticsearch multi_match am Anfang der Wörter

curl -XGET 'localhost:9200/fcomputer/products/_search?pretty' -d' 
{ 
    "query" : { 
     "multi_match" : { 
      "query" : "sams evo", 
"fields": ["title", "fulltext"] 
     } 
    } 
}' 

Was ich versuche, seine Suche zu tun, nachdem alles, was es enthält oder beginnen mit sams und evo und ich kümmere mich nicht um Groß- und Klein.

Jetzt sieht es aus wie es ist geschlossen sein die richtigen Worte, wenn ich tippe und seine Verwendung eine Art "oder" auf Sams und Evo.

Gibt es eine einfache Möglichkeit, um die Abfrage zu sagen:

  1. Suche im Feld: Titel und Volltext

  2. Wenn Sie somthing in einem Feld Spiel beider Worte (sams & evo) Spiel finden nach (Anfang) oder (100% Übereinstimmung)

  3. Geben Sie alle gültigen Daten in einer Suche zurück.

Ich habe versucht, ein Spiel auf diesem Titel zu finden:

  • Samsung 950 PRO MZ-V5P256BW - Solid State Drive - 256 GB - PCI Express 3.0 x4 (NVMe

  • ASUS GTX950-2G grafikkort - GF GTX 950-2 G

  • ASUS GTX950-OC-2GD5 grafikkort - GF GTX 950 bis 2 GB

  • 01.235.
  • Zebra Z-Ultimate 5A - permanentklebendes blankes Polyesterband - 950 stk.

  • Kyocera TK 950 - Art - original - tonerpatron

Das einzige Spiel hier geschlossen sein (Samsung 950 PRO), wenn ich den Suchbegriff "Samsung 950" verwenden, aber es funktioniert nicht.

Antwort

1

Versuchen Sie, diese

{ 
    "query": { 
    "multi_match": { 
     "query": "sam evo", 
     "type": "cross_fields", 
     "operator": "and", 
     "fields": [ 
     "title", 
     "fulltext" 
     ] 
    } 
    } 
} 

Verwendung dieser Einstellung

{ 
    "settings": { 
     "analysis": { 
      "filter": { 
       "autocomplete_filter": { 
        "type":  "edge_ngram", 
        "min_gram": 1, 
        "max_gram": 20 
       } 
      }, 
      "analyzer": { 
       "autocomplete": { 
        "type":  "custom", 
        "tokenizer": "standard", 
        "filter": [ 
         "lowercase", 
         "autocomplete_filter" 
        ] 
       } 
      } 
     } 
    } 
} 

und Kartierung

{ 
    "properties": { 
    "title": { 
     "type": "string", 
     "analyzer": "autocomplete", 
     "search_analyzer": "standard" 
    }, 
    "fulltext": { 
     "type": "string", 
     "analyzer": "autocomplete", 
     "search_analyzer": "standard" 
    } 
    } 
} 
+0

seine immer noch nicht in der begning der des Wortes wie "Samsung 750 evo" Suche wird nicht mit dieser Abfrage gefunden werden. – ParisNakitaKejser

+0

Versuchen Sie jetzt mit der Einstellung und Zuordnung. – blackmamba

+0

Können Sie eine Locke dafür bauen?kann sehen, was du meinst, aber nicht verstehen, wie man es benutzt, ich bin sehr neu für Elasticsearch für jetzt :) – ParisNakitaKejser

Verwandte Themen