2016-11-15 4 views
-4

konvertieren Ich versuche, Daten aus Spalte1 und Spalte2 zu erhalten, können beide dieser Spalten die angeforderten Daten haben. Ich möchte das Ergebnis mit den Daten aus column1 bestellt werden und dann durch Daten aus column2wie unter Sql Abfrage zu ElasticSearch Query

SQL Query gefolgt:

select * from table_name wo column1 = 'first1' oder column2 = 'first1' Auftrag von column1, column2

Bitte beachten Sie unter Daten

column1 column2


first2 first1

first1 last1

first3 last3

last3 last4

first1 last4

Ergebnis

column1 column2

012.351.641 sein sollte

first1 last1

first1 last4

first2 first1

Ich möchte eine elastische Abfrage für ähnliche Ergebnisse erhalten. Danke im Voraus.

+0

HALLO, Ich habe versucht, Sortierkonzept aber es passieren, nachdem die Daten abgerufen werden. aber ich brauche zur Zeit der Abfrage. ich habe unten Abfrage verwendet, dass, wo ich order by-Klausel hinzufügen müssen – ssantug

+0

{ "Abfrage": { "Bool": { "must": [ { "match": { "was" : { "Abfrage": "ABC", "Betreiber": "und" } } } ] } } } – ssantug

+0

hier das "was" Feld copy_to Konzept verwendete Kombination von column_name, column_last_name, für welches Feld – ssantug

Antwort

0

können Sie benutzerdefinierte Scoring für Daten verwenden. Ich denke, das ist was du willst. Wenn Sie dieses Scoring verwenden, weisen Daten mit dem Wert ABC im ersten Feld mehr Punkte auf als Daten in der zweiten Spalte.

{ 
    "query": { 
    "function_score": { 
     "query": { 
     "bool": { 
      "should": [ 
      { 
       "match": { 
       "column_name": "ABC" 
       } 
      }, 
      { 
       "match": { 
       "column_last_name": "ABC" 
       } 
      } 
      ], 
      "minimum_should_match": 1 
     } 
     }, 
     "script_score": { 

     "script": { 
      "params":{ 
      "word" : "ABC" 
      }, 
      "inline" : "if(_source.column_name.equals(word)){return 2;} else if(_source.column_last_name.equals(word)){return 1;}" 
     } 
     }, 
     "boost_mode": "replace" 
    } 
    } 
} 
+0

Okay, über die Daten nicht nachdenken. Bitte beachten Sie, wie Sie eine bove sql in eine ElasticSearch JSON Abfrage konvertieren. Es gibt zwei Szenarien, in denen Spalte_Name übereinstimmt oder Spalte_Last_Name stimmt überein, aber ich möchte nur Spalte_Last_Name anzeigen, die übereinstimmenden Daten, nach Spalte_Name – ssantug

+0

Ich verstehe nicht, Ihren Mittelwert. Dies ist die genaue Konvertierung Ihrer SQL-Abfrage. Möchten Sie Daten in zwei Spalten gleichzeitig oder getrennt abgleichen? –

+0

gleiche Zeit, ich habe meine Frage aktualisiert finden Sie bitte – ssantug