2017-04-18 3 views
0

Ich möchte die Zeichenfolge im Feld enthalten Zeichenfolge enthalten. Wie Suche in SQL Ich habe versucht, die Regex zu suchen.Suche case insensitive

$params["query"]["bool"]["filter"][]["regexp"][$item_key] = '.*'.$search_pattern.'.*' 

Ich kann nur nach unteren Wort suchen. Für das obere Wort funktioniert es nicht. Beispiel:

mein Titel ist: ABC

wenn Suchtext ist: abc -> zur Folge hat

wenn Suchtext ist: ABC -> kein Ergebnis

Mein Mapping config:

`'mappings' => [ 
     'items' => [ 
      "title" => [ 
       "type" => "text", 
       "fields" => [ 
        "keyword" => [ 
         "type" => "keyword", 
        ] 
       ], 
       "fielddata" => true, 
       "index" => "not_analyzed", 
      ] 
     ] 
    ]` 

Hat jemand eine Idee für die Suche in Groß-und Kleinschreibung nicht? Vielen Dank.

Antwort

0

Sie verwenden die Präfixabfrage innerhalb des Bool-Filters. Elasticsearch analysiert die Abfrage nach Filtern nicht. Sie können Ihre regex in einen Abfragekontext verschieben, in dem die Abfragebegriffe vom Indexanalysator analysiert werden. Um sicherzustellen, dass die Begriffe beim Indexieren und Suchen elastisch sind, suchen Sie den gleichen Analysator.

Sie können einen standard Analysator

{ 
    "mappings": { 
     "items": { 
      "properties": { 
       "title": { 
        "type": "text", 
        "fields": { 
         "keyword": { 
          "type": "keyword" 
         } 
        }, 
        "fielddata": true, 
        "analyzer": "standard" 
       } 
      } 
     } 
    } 
} 

Abfrage

{ 
    "query": { 
     "regexp":{ 
      "title": "ab.*" 
     } 
    } 
} 

Hoffnung anwenden, das hilft

+0

Ich habe versucht, die Zuordnung Config zu ändern, wie Sie gesagt haben. Aber ich habe diesen Fehler: {"Fehler": {"root_cause": [{"type": "illegal_argument_exception", "Grund": "Mapper für [title] Konflikte mit bestehenden m apping in anderen Typen: \ n [ mapper [title] hat einen anderen [analyzer]] "}]," type ":" illegal_argument_exception "," reason ":" Mapper für [title] Konflikte mit existierendem Mapping in anderen Typen: \ n [Mapper [title] hat unterschiedliche Werte [Analysator]] "}," st atus ": 400} – ToujouAya

+0

Wie das, was ich oben gesagt habe. Ich möchte eine Funktion verwenden, die in SQL ähnlich ** gefällt ** ist. Say Beispieldaten in Feld: Nervous Nightingale qrBGHaSdMe Suche Titel: Neeraj - kein Ergebnis Titel: neeraj - Titel erhalten führen: ne - get führen Titel: Eraj - Ergebnis erhält – ToujouAya

+0

die errror versucht, Sie zu sagen, die Anwendung Diese Mappings auf dem gleichen Index, warum erstellen Sie nicht einen neuen Index. – user3775217