2017-04-12 4 views
1

Ist es möglich, Abfrage basierend auf der Bedingung in elastischer Suche zu erstellen?Bedingungsbasierte Abfrage in der elastischen Suche

Eg

{ 
"match": { 
     "ticket_group.marketplaceticket_source_id": (q.preferredProvider!=0) ? q.preferredProvider:""           
}  
} 

In oben coe wenn „q.preferredProvider“ 0 ist, dann möchte ich Bedingung weglassen für „ticket_group.marketplaceticket_source_id“ oder kann man sagen, dass „ticket_group.marketplaceticket_source_id“ sonst jeden Wert annehmen kann „ticket_group.marketplaceticket_source_id“ mit übereinstimmen sollte "q.preferredProvider"

Wie kann ich es in elastischer Suche schreiben?

+0

Möglicherweise möchten Sie klären, was Sie versuchen, hier genau das zu tun. Was ist q? In der Zwischenzeit können Sie möglicherweise eine Skriptabfrage dafür verwenden. Eine weitere Option ist die Verwendung von Funktionsanalyseabfragen, bei denen Sie Filter für die Funktionen verwenden. Auch eine einfache Bool-Abfrage könnte hier gut genug sein. –

Antwort

0

Ich denke, das wird u helfen: -

Schauen Sie sich diese Verbindung auch linklink2link3

{ 
    "query": { 
     "bool": { 
      "must_not": { 
       "match": { 
        "q.preferredProvider": 0 
       } 
      }, 
      "must": { 
       "match": { 
        "script": { 
         "script": { 
          "doc['ticket_group.marketplaceticket_source_id'].value == doc['q.preferredProvider'].value" 
         } 
        } 
       } 
      } 
     } 
    } 
} 
Verwandte Themen