Tokenizing cadena para sugerencia de finalización

quiere construir la funcionalidad de autocompletar de un sitio web de comercio electrónico, utilizando Completion Suggester.

Este es mi índice:

PUT myIndex
{
    "mappings": {
        "_doc" : {
            "properties" : {
                "suggest" : {
                    "type" : "completion"
                },
                "title" : {
                    "type": "keyword"
                }, 
                "category" : { 
                    "type": "keyword"
                },
                "description" : { 
                    "type": "keyword"
                }
            }
        }
    }
}

Ahora, cuando cargue el anuncio, quiero que el campo de título se use para autocompletar, así que así es como subo un documento:

POST dummy/_doc
{
  "title": "Blue asics running shoes",
  "category": "sports",
  "description": "Nice blue running shoes, size 44 eu",
  "suggest": {
    "input": "Blue Asics running shoes" // <-- use title
  }
}

Problema es, de esta manera, la búsqueda elástica solo coincide con la cadena desde el principio ... es decir, "Blu" encontrará el resultado pero "Asic" o "Ejecutar" o "Sho" no devolverán nada ...

Así que lo que tengo que hacer es tokenizar mi entrada de esta manera:

POST dummy/_doc
{
  "title": "Blue asics running shoes",
  "category": "sports",
  "description": "Nice blue running shoes, size 44 eu",
  "suggest": {
    "input": ["Blue", "Asics", "running", "shoes"] // <-- tokenized title
  }
}

Esto funcionaría bien ... Pero, ¿cómo se supone que tokenice mi campo? Sé que puedo dividir la cadena en c #, pero ¿hay alguna forma de que pueda hacer esto en Elasticsearch / Nest?

Respuestas a la pregunta(2)

Su respuesta a la pregunta