Elasticsearch: тестирование пользовательского анализатора без добавления сопоставления индекса - PullRequest
0 голосов
/ 20 мая 2018

Могу ли я протестировать пользовательский анализатор / токенизаторasticsearch, не добавляя его сначала в индекс?Что-то вроде:

GET _analyze
{
  "tokenizer": {
        "my_custom_tokenizer": {
          "type": "edge_ngram",
          "min_gram": 2,
          "max_gram": 10,
          "token_chars": [
          "letter", "digit", "symbol"

          ]
        }
      },
  "text" : "this is a test"
}

Я могу проверить его, сначала добавив новый анализатор в индекс -

curl -X PUT "localhost:9200/my_index" -H 'Content-Type: application/json' -d'
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_custom_analyzer": {
          "tokenizer": "my_custom_tokenizer"
        }
      },
      "tokenizer": {
        "my_custom_tokenizer": {
          "type": "edgeNGram",
          "min_gram": 1,
          "max_gram": 30,
          "token_chars": [
          "letter", "digit", "symbol", "punctuation", "whitespace"

          ]
        }
      }
    }
  }
}
'

, а затем сделав это -

curl -X POST "localhost:9200/my_index/_analyze" -H 'Content-Type: application/json' -d'
{
  "analyzer": "my_custom_analyzer",
  "text": "testing"
}
'

Могу ли я избежать этого двухэтапного процесса?

1 Ответ

0 голосов
/ 21 мая 2018

Насколько мне известно, более старые версии Elasticsearch, такие как 2.x, не будут поддерживать сложный анализ массивов / объектов, как это, но более новые версии, такие как 5.x и выше, определенно поддерживают.

ВыВы почти готовы к существующему запросу JSON, просто удалите объект "my_custom_tokenizer", сохранив его текущую конфигурацию, например:

{
  "tokenizer" : {
    "type": "edge_ngram", 
    "min_gram": 2, 
    "max_gram": 10, 
    "token_chars": ["letter", "digit", "symbol"]
  },

  "text" : "this is a test"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...