Это код NEST для вышеперечисленного:

е создать автоматическую функциональность веб-сайта электронной коммерции с помощью Completion Suggester.

Это мой индекс:

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

Теперь, когда вы загружаете рекламу, я хочу, чтобы поле заголовка использовалось для автозаполнения, так вот, как я загружаю документ:

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
  }
}

Проблема в том, что упругий поиск соответствует только строке с начала ... то есть "Blu" найдет результат, но "Asic", "Run" или "Sho" ничего не вернут ...

Так что мне нужно сделать, чтобы токенизировать мой вклад, как это:

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
  }
}

Это будет хорошо работать ... Но как я должен токенизировать свое поле? Я знаю, что могу разбить строку в c #, но есть ли способ сделать это в Elasticsearch / Nest?

Ответы на вопрос(2)

Ваш ответ на вопрос