Keep types token filter

特定のタイプのトークンを保持または削除します。たとえば、このフィルターを使用して、3 quick foxesquick 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

  1. resp = client.indices.analyze(
  2. tokenizer="standard",
  3. filter=[
  4. {
  5. "type": "keep_types",
  6. "types": [
  7. "<NUM>"
  8. ]
  9. }
  10. ],
  11. text="1 quick fox 2 lazy dogs",
  12. )
  13. print(resp)

Ruby

  1. response = client.indices.analyze(
  2. body: {
  3. tokenizer: 'standard',
  4. filter: [
  5. {
  6. type: 'keep_types',
  7. types: [
  8. '<NUM>'
  9. ]
  10. }
  11. ],
  12. text: '1 quick fox 2 lazy dogs'
  13. }
  14. )
  15. puts response

Js

  1. const response = await client.indices.analyze({
  2. tokenizer: "standard",
  3. filter: [
  4. {
  5. type: "keep_types",
  6. types: ["<NUM>"],
  7. },
  8. ],
  9. text: "1 quick fox 2 lazy dogs",
  10. });
  11. console.log(response);

Console

  1. GET _analyze
  2. {
  3. "tokenizer": "standard",
  4. "filter": [
  5. {
  6. "type": "keep_types",
  7. "types": [ "<NUM>" ]
  8. }
  9. ],
  10. "text": "1 quick fox 2 lazy dogs"
  11. }

フィルターは次のトークンを生成します:

Text

  1. [ 1, 2 ]

Exclude example

次のanalyze APIリクエストは、keep_typesフィルターを使用して1 quick fox 2 lazy dogsから<NUM>トークンを削除します。modeパラメーターがexcludeに設定されていることに注意してください。

Python

  1. resp = client.indices.analyze(
  2. tokenizer="standard",
  3. filter=[
  4. {
  5. "type": "keep_types",
  6. "types": [
  7. "<NUM>"
  8. ],
  9. "mode": "exclude"
  10. }
  11. ],
  12. text="1 quick fox 2 lazy dogs",
  13. )
  14. print(resp)

Ruby

  1. response = client.indices.analyze(
  2. body: {
  3. tokenizer: 'standard',
  4. filter: [
  5. {
  6. type: 'keep_types',
  7. types: [
  8. '<NUM>'
  9. ],
  10. mode: 'exclude'
  11. }
  12. ],
  13. text: '1 quick fox 2 lazy dogs'
  14. }
  15. )
  16. puts response

Js

  1. const response = await client.indices.analyze({
  2. tokenizer: "standard",
  3. filter: [
  4. {
  5. type: "keep_types",
  6. types: ["<NUM>"],
  7. mode: "exclude",
  8. },
  9. ],
  10. text: "1 quick fox 2 lazy dogs",
  11. });
  12. console.log(response);

Console

  1. GET _analyze
  2. {
  3. "tokenizer": "standard",
  4. "filter": [
  5. {
  6. "type": "keep_types",
  7. "types": [ "<NUM>" ],
  8. "mode": "exclude"
  9. }
  10. ],
  11. "text": "1 quick fox 2 lazy dogs"
  12. }

フィルターは次のトークンを生成します:

Text

  1. [ quick, fox, lazy, dogs ]

Configurable parameters

  • types
  • (必須、文字列の配列)保持または削除するトークンタイプのリスト。
  • mode
  • (オプション、文字列)指定されたトークンタイプを保持するか削除するかを示します。有効な値は次のとおりです:
    • include
    • (デフォルト)指定されたトークンタイプのみを保持します。
    • exclude
    • 指定されたトークンタイプを削除します。

Customize and add to an analyzer

  1. たとえば、次の[create index API](/read/elasticsearch-8-15/b5c127aabf881d48.md)リクエストは、新しい[custom analyzer](/read/elasticsearch-8-15/f8c7123dddb484d0.md)を構成するためにカスタム`````keep_types`````フィルターを使用します。カスタム`````keep_types`````フィルターは`````<ALPHANUM>`````(英数字)トークンのみを保持します。
  2. #### Python
  3. ``````python
  4. resp = client.indices.create(
  5. index="keep_types_example",
  6. settings={
  7. "analysis": {
  8. "analyzer": {
  9. "my_analyzer": {
  10. "tokenizer": "standard",
  11. "filter": [
  12. "extract_alpha"
  13. ]
  14. }
  15. },
  16. "filter": {
  17. "extract_alpha": {
  18. "type": "keep_types",
  19. "types": [
  20. "<ALPHANUM>"
  21. ]
  22. }
  23. }
  24. }
  25. },
  26. )
  27. print(resp)
  28. `

Ruby

  1. response = client.indices.create(
  2. index: 'keep_types_example',
  3. body: {
  4. settings: {
  5. analysis: {
  6. analyzer: {
  7. my_analyzer: {
  8. tokenizer: 'standard',
  9. filter: [
  10. 'extract_alpha'
  11. ]
  12. }
  13. },
  14. filter: {
  15. extract_alpha: {
  16. type: 'keep_types',
  17. types: [
  18. '<ALPHANUM>'
  19. ]
  20. }
  21. }
  22. }
  23. }
  24. }
  25. )
  26. puts response

Js

  1. const response = await client.indices.create({
  2. index: "keep_types_example",
  3. settings: {
  4. analysis: {
  5. analyzer: {
  6. my_analyzer: {
  7. tokenizer: "standard",
  8. filter: ["extract_alpha"],
  9. },
  10. },
  11. filter: {
  12. extract_alpha: {
  13. type: "keep_types",
  14. types: ["<ALPHANUM>"],
  15. },
  16. },
  17. },
  18. },
  19. });
  20. console.log(response);

Console

  1. PUT keep_types_example
  2. {
  3. "settings": {
  4. "analysis": {
  5. "analyzer": {
  6. "my_analyzer": {
  7. "tokenizer": "standard",
  8. "filter": [ "extract_alpha" ]
  9. }
  10. },
  11. "filter": {
  12. "extract_alpha": {
  13. "type": "keep_types",
  14. "types": [ "<ALPHANUM>" ]
  15. }
  16. }
  17. }
  18. }
  19. }