2017-05-12 8 views
1

Ich habe eine Datenbank in Elasticsearch gesammelt und ich habe sie nicht nach ID, sondern nach dem Titel identifiziert. Daher sind keine Titel in jedem Typ gleich.Elasticsearch überprüfen, ob der Titel bereits in Typ

Ich habe versucht, must => match_phrase, aber es hat mir mehr als eine im Gegenzug. Etwas könnte "Document 1" genannt werden und etwas anderes könnte "Document 1,2,3" genannt werden. Daher würde es mehr als ein Ergebnis zurückgeben, indem Sie match_phrase tun.

Sagen wir, ich habe 5 Dokumente genannt:

  1. Dokument Beispiel 1
  2. Beispiel 1
  3. 1 Dokument Beispiel
  4. Dokument Beispiel 1 und 2
  5. Document Beispiel

Welche Anfrage sollte ich nur senden, um zum Beispiel zurückzugeben: "Document example"?

Ich habe versucht, verschiedene Variationen dieser Art der Suche nach 127.0.0.1:9200/index/type/_search:

{ 
    "query":{ 
     "match_phrase": { 
      "title":"Document example" 
     } 
    } 
} 

So etwa ich habe mich gefragt, wie ich die genaue Parse überprüfen oder suchen konnte und nur ein oder Null führt im Gegenzug?

EDIT

127.0.0.1:9200/myindex/mytype/_mapping gibt diese:

{ 
    "myindex": { 
    "mappings": { 
     "mytype": { 
     "properties": { 
      "category": { 
      "type": "text", 
      "fields": { 
       "keyword": { 
       "type": "keyword", 
       "ignore_above": 256 
       } 
      } 
      }, 
      "date": { 
      "type": "date" 
      }, 
      "link": { 
      "type": "text", 
      "fields": { 
       "keyword": { 
       "type": "keyword", 
       "ignore_above": 256 
       } 
      } 
      }, 
      "size": { 
      "type": "long" 
      }, 
      "source": { 
      "type": "text", 
      "fields": { 
       "keyword": { 
       "type": "keyword", 
       "ignore_above": 256 
       } 
      } 
      }, 
      "title": { 
      "type": "text", 
      "fields": { 
       "keyword": { 
       "type": "keyword", 
       "ignore_above": 256 
       } 
      } 
      } 
     } 
     } 
    } 
    } 
} 
+0

Können Sie teilen Abbildung Ihrer Index. 'GET/index/type/_mapping'. – Richa

+0

Außerdem müssen Sie Ihre Anforderungen besser definieren. Nach einer Abfrage für das Zurückholen nur '' Dokumentbeispiels '' ist einfach zu fragen. Die Fragen lauten auch: Was ist, wenn Sie nach "Dokumentbeispiel" suchen? Haben Sie andere Fragen, die mit Ihrem Titelfeld übereinstimmen sollten? Interessierst du dich auch für Teilabgleiche? –

+0

@Richa Ich habe es am unteren Rand hinzugefügt. Ich habe einige seiner Werte geändert (Index und Typ) – Typewar

Antwort

1

Verwenden Sie einfach einen term Filter (die genaue Anpassung der Fall ist) auf title.keyword:

{ 
    "query": { 
    "term": { 
     "title.keyword": { 
     "value": "Document example" 
     } 
    } 
    } 
} 
+0

Wow, schön. Hat funktioniert! – Typewar

Verwandte Themen