2017-05-11 5 views
0

My Elasticsearch Codierung wie unten zwei Wort definieren:Wie in Abstand

"query": { 
    "constant_score" : { 
     "filter" : { 
     "bool": { 
      "must": [ 
      { 
      "terms": {"stkno" : ["Net Asset","asset combine"]}}, 
{ "range": { "CDate": { "gte": "2015-01-01" , "lte": "2017-06-03T23:59:59" } } } ] 

    }}}} 

dies Mapping:

{ 
    "news": { 
    "mappings": { 
    "bursa": { 
     "_timestamp": {}, 
     "properties": { 
      "CDate": { 
       "type": "date", 
       "format": "epoch_millis||dateOptionalTime" 
      }, 
      "RDate": { 
       "type": "date", 
       "format": "epoch_millis||dateOptionalTime" 
      }, 
      "category": { 
       "type": "string" 
      }, 
      "content": { 
       "type": "string" 
      }, 
      "exDate": { 
       "type": "string" 
      }, 
      "exgcode": { 
       "type": "string" 
      }, 
      "htext": { 
       "type": "string" 
      }, 
      "paymentDate": { 
       "type": "string" 
      }, 
      "stat": { 
       "type": "string" 
      }, 
      "stkno": { 
       "type": "string" 
      }, 
      "tag": { 
       "type": "string" 
      } 
     } 
    } 
    } 
} 
} 

Bitte freundlich beraten, wenn mein Wort ist: Nettoinventar and Asset kombinieren, verwenden Sie in Muss Bedingung, , wenn "Asset kombinieren" nicht in der Elasticsearch und "New Asset" in der Elasticsearch, mit Must-Bedingung, damit alle Indizes nicht suchen können?

wie soll ich das wort finden, wenn die von ihnen in elasticsearch? Weil es nicht finden kann "Net Asset" genaues Wort, wenn ich Bedingung verwenden sollte.

Dank

+0

Bitte teilen Sie die Zuordnung: 'GET index/type/_mapping' – Richa

+0

ich bin reedit die Codierung, die Sie benötigen wie oben –

+0

@SharonWong Können Sie bestätigen, verwenden Sie' sktno' für die Suche nur 'genaue Begriffe'? Wenn dies der Fall ist, ändern Sie die Zuordnung von 'sktno' zu' string not_analyzed', ansonsten sollte Richas Antwort Ihnen helfen. – avr

Antwort

2

Seit stkno ist ein analyzed Feld und Sie terms Abfrage anwenden, die für genaue Übereinstimmung aussieht, sind Sie nicht in der Lage Ergebnisse zu holen. Versuchen Sie es stattdessen.

"bool": { 
    "should": [ 
     { 
      "match": { 
       "stkno": "Net Asset", 
       "operator": "and" 
      } 
     }, 
     { 
      "match": { 
       "stkno": "asset combine", 
       "operator": "and" 
      } 
     } 
    ], 
    "must": [ 
     { 
      "range": { 
       "CDate": { 
       "gte": "2015-01-01", 
       "lte": "2017-06-03T23:59:59" 
       } 
      } 
     } 
    ] 
    } 

Hoffe es hilft !!

+0

Aber es kann immer noch nicht "Net Asset" genau diese beiden Wörter zusammen finden. Es kann nur ein getrenntes Wort finden. Ich habe versucht, "bool" zu ändern: {"sollte" zu "bool": {"müssen", es ist auch dasselbe Ergebnis, das Vermögen ist getrennt. Meine Indizes haben genau das Wort "Net Asset", aber es kann nicht gefunden –

+0

Meine Antwort aktualisiert. Bitte überprüfen Sie, ob es für Sie funktioniert. – Richa

+0

@Richa, wenn er 'exakte Ausdrücke' abgleichen möchte, dann ist es nicht besser,' sktno' zu 'not_analyzed' Feld zu machen und nur' terms' Abfrage zu benutzen. – avr