2016-07-13 17 views
1

ich brauche Zeichenfolge tokenize 36-3031.00|36-3021.00 zu 36-3031.00 und 36-3021.00 mit | Begrenzer.tokenize String basierend auf Trennzeichen in Elasticsearch

Ich habe wie dieser versucht, does

PUT text 
{ 
    "test1": { 
    "settings": { 
    "analysis" : { 
      "tokenizer" : { 
       "pipe_tokenizer" : { 
        "type" : "pattern", 
        "pattern" : "|" 
       } 
      }, 
      "analyzer" : { 
       "pipe_analyzer" : { 
        "type" : "custom", 
        "tokenizer" : "pipe_tokenizer" 
       } 
      } 
     } 
    }, 
    "mappings": { 
    "mytype": { 
     "properties": { 
     "text": { 
      "type": "string", 
      "analyzer": "pipe_analyzer" 
     } 
     } 
    } 
    } 
}} 

Aber es genau produzieren. Kann jemand diesen Anwendungsfall aussortieren?

Antwort

1

Das folgende Mapping sollten Sie verwenden (einschließlich des Indexnamens im REST PUT-Befehl). Und der | Charakter muss entwertet werden:

DELETE test1 
PUT test1 
{ 
    "settings": { 
    "analysis": { 
     "tokenizer": { 
     "pipe_tokenizer": { 
      "type": "pattern", 
      "pattern": "\\|" 
     } 
     }, 
     "analyzer": { 
     "pipe_analyzer": { 
      "type": "custom", 
      "tokenizer": "pipe_tokenizer" 
     } 
     } 
    } 
    }, 
    "mappings": { 
    "mytype": { 
     "properties": { 
     "text": { 
      "type": "string", 
      "analyzer": "pipe_analyzer" 
     } 
     } 
    } 
    } 
} 

POST /test1/mytype/1 
{"text":"36-3031.00|36-3021.00"} 

GET /test1/_analyze 
{"field":"text","text":"36-3031.00|36-3021.00"} 
+0

GET/test1/_analyze { "Feld": "ProductID", "text": "36-3.031,00 | 36-3.021,00" } teilt er sich wie 36, 3031.00, 36, 3021.00 –

+0

Dann bedeutet es, dass Sie meinen Anweisungen nicht genau gefolgt sind. Ich habe meine Antwort mit einem vollständigen Test aktualisiert. –