Тестирование анализатора
API analyze — это незаменимый инструмент для просмотра терминов, созданных анализатором. Встроенный анализатор можно указать в запросе напрямую:
resp = client.indices.analyze(
analyzer="whitespace",
text="The quick brown fox.",
)
print(resp) response = client.indices.analyze(
body: {
analyzer: 'whitespace',
text: 'The quick brown fox.'
}
)
puts response const response = await client.indices.analyze({
analyzer: "whitespace",
text: "The quick brown fox.",
});
console.log(response); POST _analyze
{
"analyzer": "whitespace",
"text": "The quick brown fox."
} API возвращает следующий ответ:
{
"tokens": [
{
"token": "The",
"start_offset": 0,
"end_offset": 3,
"type": "word",
"position": 0
},
{
"token": "quick",
"start_offset": 4,
"end_offset": 9,
"type": "word",
"position": 1
},
{
"token": "brown",
"start_offset": 10,
"end_offset": 15,
"type": "word",
"position": 2
},
{
"token": "fox.",
"start_offset": 16,
"end_offset": 20,
"type": "word",
"position": 3
}
]
} Вы также можете протестировать комбинации:
- Токенизатора
- Нулевых или более фильтров токенов
- Нулевых или более фильтров символов
resp = client.indices.analyze(
tokenizer="standard",
filter=[
"lowercase",
"asciifolding"
],
text="Is this déja vu?",
)
print(resp) response = client.indices.analyze(
body: {
tokenizer: 'standard',
filter: [
'lowercase',
'asciifolding'
],
text: 'Is this déja vu?'
}
)
puts response const response = await client.indices.analyze({
tokenizer: "standard",
filter: ["lowercase", "asciifolding"],
text: "Is this déja vu?",
});
console.log(response); POST _analyze
{
"tokenizer": "standard",
"filter": [ "lowercase", "asciifolding" ],
"text": "Is this déja vu?"
} API возвращает следующий ответ:
{
"tokens": [
{
"token": "is",
"start_offset": 0,
"end_offset": 2,
"type": "<ALPHANUM>",
"position": 0
},
{
"token": "this",
"start_offset": 3,
"end_offset": 7,
"type": "<ALPHANUM>",
"position": 1
},
{
"token": "deja",
"start_offset": 8,
"end_offset": 12,
"type": "<ALPHANUM>",
"position": 2
},
{
"token": "vu",
"start_offset": 13,
"end_offset": 15,
"type": "<ALPHANUM>",
"position": 3
}
]
} В качестве альтернативы можно обратиться к custom анализатору при выполнении API analyze для конкретного индекса:
resp = client.indices.create(
index="my-index-000001",
settings={
"analysis": {
"analyzer": {
"std_folded": {
"type": "custom",
"tokenizer": "standard",
"filter": [
"lowercase",
"asciifolding"
]
}
}
}
},
mappings={
"properties": {
"my_text": {
"type": "text",
"analyzer": "std_folded"
}
}
},
)
print(resp)
resp1 = client.indices.analyze(
index="my-index-000001",
analyzer="std_folded",
text="Is this déjà vu?",
)
print(resp1)
resp2 = client.indices.analyze(
index="my-index-000001",
field="my_text",
text="Is this déjà vu?",
)
print(resp2) response = client.indices.create(
index: 'my-index-000001',
body: {
settings: {
analysis: {
analyzer: {
std_folded: {
type: 'custom',
tokenizer: 'standard',
filter: [
'lowercase',
'asciifolding'
]
}
}
}
},
mappings: {
properties: {
my_text: {
type: 'text',
analyzer: 'std_folded'
}
}
}
}
)
puts response
response = client.indices.analyze(
index: 'my-index-000001',
body: {
analyzer: 'std_folded',
text: 'Is this déjà vu?'
}
)
puts response
response = client.indices.analyze(
index: 'my-index-000001',
body: {
field: 'my_text',
text: 'Is this déjà vu?'
}
)
puts response const response = await client.indices.create({
index: "my-index-000001",
settings: {
analysis: {
analyzer: {
std_folded: {
type: "custom",
tokenizer: "standard",
filter: ["lowercase", "asciifolding"],
},
},
},
},
mappings: {
properties: {
my_text: {
type: "text",
analyzer: "std_folded",
},
},
},
});
console.log(response);
const response1 = await client.indices.analyze({
index: "my-index-000001",
analyzer: "std_folded",
text: "Is this déjà vu?",
});
console.log(response1);
const response2 = await client.indices.analyze({
index: "my-index-000001",
field: "my_text",
text: "Is this déjà vu?",
});
console.log(response2); PUT my-index-000001
{
"settings": {
"analysis": {
"analyzer": {
"std_folded": {
"type": "custom",
"tokenizer": "standard",
"filter": [
"lowercase",
"asciifolding"
]
}
}
}
},
"mappings": {
"properties": {
"my_text": {
"type": "text",
"analyzer": "std_folded"
}
}
}
}
GET my-index-000001/_analyze
{
"analyzer": "std_folded",
"text": "Is this déjà vu?"
}
GET my-index-000001/_analyze
{
"field": "my_text",
"text": "Is this déjà vu?"
} API возвращает следующий ответ:
{
"tokens": [
{
"token": "is",
"start_offset": 0,
"end_offset": 2,
"type": "<ALPHANUM>",
"position": 0
},
{
"token": "this",
"start_offset": 3,
"end_offset": 7,
"type": "<ALPHANUM>",
"position": 1
},
{
"token": "deja",
"start_offset": 8,
"end_offset": 12,
"type": "<ALPHANUM>",
"position": 2
},
{
"token": "vu",
"start_offset": 13,
"end_offset": 15,
"type": "<ALPHANUM>",
"position": 3
}
]
} | Определите анализатор | |
| Поле | |
| Для обращения к этому анализатору API | |
| Обращайтесь к анализатору по имени. | |
| Обращайтесь к анализатору, используемому полем |
© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/8.17/test-analyzer.html