2016-05-17 9 views
0

Ich versuche Boolesche Abfragen zu erhalten, die in ES unter Verwendung Percolate API gespeichert werden.Elastic Search Percolate Boolean Abfragen

Index Mapping wird unter

curl -XPUT 'localhost:9200/my-index' -d '{ 
    "mappings": { 
    "taggers": { 
     "properties": { 
     "content": { 
      "type": "string" 
     } 
     } 
    } 
    } 
}' 

I Aufzeichnungen wie diese ist Einfügen (Abfragen enthalten richtiges boolean Format (AND, OR, NOT etc.) wie unten gegebenes Beispiel in)

curl -XPUT 'localhost:9200/my-index/.percolator/1' -d '{ 
     "query" : { 
      "match" : { 
       "content" : "Audi AND BMW" 
      } 
     } 
}' 

Und Dann poste ich ein Dokument, um passende Anfragen zu erhalten.

curl -XGET 'localhost:9200/my-index/my-type/_percolate' -d '{ 
    "doc" : { 
     "content" : "I like audi very much" 
    } 
}' 

In obigem Fall sollte keine Datensätze kommen, weil boolean Abfrage „Audi UND BMW“ ist aber immer noch Rekord geben wird. Es bedeutet, dass es AND Zustand ignoriert. Ich bin nicht in der Lage, herauszufinden, warum es nicht für boolesche Abfragen funktioniert.

Antwort

0

Sie müssen stattdessen diese Abfrage versickern, match Abfragen nicht verstehen, die AND Operator (sie werden es wie die normale Token and behandeln), aber query_string tut.

curl -XPUT 'localhost:9200/my-index/.percolator/1' -d '{ 
    "query" : { 
     "query_string" : { 
      "query" : "Audi AND BMW", 
      "default_field": "content" 
     } 
    } 
}' 
Verwandte Themen