Keep types token filter
特定のタイプのトークンを保持または削除します。たとえば、このフィルターを使用して、3 quick foxes
をquick foxes
に変更し、<ALPHANUM>
(英数字)トークンのみを保持できます。
Token types
トークンタイプは、文字をトークンに変換する際にtokenizerによって設定されます。トークンタイプはトークナイザーによって異なる場合があります。
たとえば、standard
トークナイザーは、<ALPHANUM>
、<HANGUL>
、<NUM>
など、さまざまなトークンタイプを生成できます。lowercase
トークナイザーのようなシンプルなアナライザーは、word
トークンタイプのみを生成します。
特定のトークンフィルターもトークンタイプを追加できます。たとえば、synonym
フィルターは<SYNONYM>
トークンタイプを追加できます。
一部のトークナイザーは、このトークンフィルターをサポートしていません。たとえば、キーワード、simple_pattern、およびsimple_pattern_splitトークナイザーは、トークンタイプ属性を設定することをサポートしていません。
このフィルターはLuceneのTypeTokenFilterを使用します。
Include example
次のanalyze APIリクエストは、keep_types
フィルターを使用して1 quick fox 2 lazy dogs
から<NUM>
(数値)トークンのみを保持します。
Python
resp = client.indices.analyze(
tokenizer="standard",
filter=[
{
"type": "keep_types",
"types": [
"<NUM>"
]
}
],
text="1 quick fox 2 lazy dogs",
)
print(resp)
Ruby
response = client.indices.analyze(
body: {
tokenizer: 'standard',
filter: [
{
type: 'keep_types',
types: [
'<NUM>'
]
}
],
text: '1 quick fox 2 lazy dogs'
}
)
puts response
Js
const response = await client.indices.analyze({
tokenizer: "standard",
filter: [
{
type: "keep_types",
types: ["<NUM>"],
},
],
text: "1 quick fox 2 lazy dogs",
});
console.log(response);
Console
GET _analyze
{
"tokenizer": "standard",
"filter": [
{
"type": "keep_types",
"types": [ "<NUM>" ]
}
],
"text": "1 quick fox 2 lazy dogs"
}
フィルターは次のトークンを生成します:
Text
[ 1, 2 ]
Exclude example
次のanalyze APIリクエストは、keep_types
フィルターを使用して1 quick fox 2 lazy dogs
から<NUM>
トークンを削除します。mode
パラメーターがexclude
に設定されていることに注意してください。
Python
resp = client.indices.analyze(
tokenizer="standard",
filter=[
{
"type": "keep_types",
"types": [
"<NUM>"
],
"mode": "exclude"
}
],
text="1 quick fox 2 lazy dogs",
)
print(resp)
Ruby
response = client.indices.analyze(
body: {
tokenizer: 'standard',
filter: [
{
type: 'keep_types',
types: [
'<NUM>'
],
mode: 'exclude'
}
],
text: '1 quick fox 2 lazy dogs'
}
)
puts response
Js
const response = await client.indices.analyze({
tokenizer: "standard",
filter: [
{
type: "keep_types",
types: ["<NUM>"],
mode: "exclude",
},
],
text: "1 quick fox 2 lazy dogs",
});
console.log(response);
Console
GET _analyze
{
"tokenizer": "standard",
"filter": [
{
"type": "keep_types",
"types": [ "<NUM>" ],
"mode": "exclude"
}
],
"text": "1 quick fox 2 lazy dogs"
}
フィルターは次のトークンを生成します:
Text
[ quick, fox, lazy, dogs ]
Configurable parameters
types
- (必須、文字列の配列)保持または削除するトークンタイプのリスト。
mode
- (オプション、文字列)指定されたトークンタイプを保持するか削除するかを示します。有効な値は次のとおりです:
include
- (デフォルト)指定されたトークンタイプのみを保持します。
exclude
- 指定されたトークンタイプを削除します。
Customize and add to an analyzer
たとえば、次の[create index API](/read/elasticsearch-8-15/b5c127aabf881d48.md)リクエストは、新しい[custom analyzer](/read/elasticsearch-8-15/f8c7123dddb484d0.md)を構成するためにカスタム`````keep_types`````フィルターを使用します。カスタム`````keep_types`````フィルターは`````<ALPHANUM>`````(英数字)トークンのみを保持します。
#### Python
``````python
resp = client.indices.create(
index="keep_types_example",
settings={
"analysis": {
"analyzer": {
"my_analyzer": {
"tokenizer": "standard",
"filter": [
"extract_alpha"
]
}
},
"filter": {
"extract_alpha": {
"type": "keep_types",
"types": [
"<ALPHANUM>"
]
}
}
}
},
)
print(resp)
`
Ruby
response = client.indices.create(
index: 'keep_types_example',
body: {
settings: {
analysis: {
analyzer: {
my_analyzer: {
tokenizer: 'standard',
filter: [
'extract_alpha'
]
}
},
filter: {
extract_alpha: {
type: 'keep_types',
types: [
'<ALPHANUM>'
]
}
}
}
}
}
)
puts response
Js
const response = await client.indices.create({
index: "keep_types_example",
settings: {
analysis: {
analyzer: {
my_analyzer: {
tokenizer: "standard",
filter: ["extract_alpha"],
},
},
filter: {
extract_alpha: {
type: "keep_types",
types: ["<ALPHANUM>"],
},
},
},
},
});
console.log(response);
Console
PUT keep_types_example
{
"settings": {
"analysis": {
"analyzer": {
"my_analyzer": {
"tokenizer": "standard",
"filter": [ "extract_alpha" ]
}
},
"filter": {
"extract_alpha": {
"type": "keep_types",
"types": [ "<ALPHANUM>" ]
}
}
}
}
}