トークンカウントフィールドタイプ
タイプ token_count
のフィールドは、実際には integer
フィールドであり、文字列値を受け入れ、それを分析し、次に文字列内のトークンの数をインデックスします。
例えば:
Python
resp = client.indices.create(
index="my-index-000001",
mappings={
"properties": {
"name": {
"type": "text",
"fields": {
"length": {
"type": "token_count",
"analyzer": "standard"
}
}
}
}
},
)
print(resp)
resp1 = client.index(
index="my-index-000001",
id="1",
document={
"name": "John Smith"
},
)
print(resp1)
resp2 = client.index(
index="my-index-000001",
id="2",
document={
"name": "Rachel Alice Williams"
},
)
print(resp2)
resp3 = client.search(
index="my-index-000001",
query={
"term": {
"name.length": 3
}
},
)
print(resp3)
Ruby
response = client.indices.create(
index: 'my-index-000001',
body: {
mappings: {
properties: {
name: {
type: 'text',
fields: {
length: {
type: 'token_count',
analyzer: 'standard'
}
}
}
}
}
}
)
puts response
response = client.index(
index: 'my-index-000001',
id: 1,
body: {
name: 'John Smith'
}
)
puts response
response = client.index(
index: 'my-index-000001',
id: 2,
body: {
name: 'Rachel Alice Williams'
}
)
puts response
response = client.search(
index: 'my-index-000001',
body: {
query: {
term: {
'name.length' => 3
}
}
}
)
puts response
Js
const response = await client.indices.create({
index: "my-index-000001",
mappings: {
properties: {
name: {
type: "text",
fields: {
length: {
type: "token_count",
analyzer: "standard",
},
},
},
},
},
});
console.log(response);
const response1 = await client.index({
index: "my-index-000001",
id: 1,
document: {
name: "John Smith",
},
});
console.log(response1);
const response2 = await client.index({
index: "my-index-000001",
id: 2,
document: {
name: "Rachel Alice Williams",
},
});
console.log(response2);
const response3 = await client.search({
index: "my-index-000001",
query: {
term: {
"name.length": 3,
},
},
});
console.log(response3);
コンソール
PUT my-index-000001
{
"mappings": {
"properties": {
"name": {
"type": "text",
"fields": {
"length": {
"type": "token_count",
"analyzer": "standard"
}
}
}
}
}
}
PUT my-index-000001/_doc/1
{ "name": "John Smith" }
PUT my-index-000001/_doc/2
{ "name": "Rachel Alice Williams" }
GET my-index-000001/_search
{
"query": {
"term": {
"name.length": 3
}
}
}
name フィールドは text フィールドであり、デフォルトの standard アナライザーを使用します。 |
|
name.length フィールドは token_count マルチフィールド であり、name フィールド内のトークンの数をインデックスします。 |
|
このクエリは、Rachel Alice Williams を含むドキュメントのみを一致させます。これは3つのトークンを含んでいます。 |
トークンカウントフィールドのパラメータ
次のパラメータは token_count
フィールドで受け入れられます:
analyzer |
文字列の分析に使用される アナライザー。必須。最良のパフォーマンスを得るためには、トークンフィルターのないアナライザーを使用してください。 |
enable_position_increments |
位置のインクリメントをカウントする必要があるかどうかを示します。アナライザーフィルターによって削除されたトークンをカウントしたくない場合は、false に設定します(stop のように)。デフォルトは true です。 |
doc_values |
フィールドはディスクに列ストライド方式で保存され、後でソート、集計、またはスクリプトに使用されるべきですか? true (デフォルト)または false を受け入れます。 |
index |
フィールドは検索可能であるべきですか? true (デフォルト)および false を受け入れます。 |
null_value |
フィールドと同じ type の数値値を受け入れ、明示的な null 値の代わりに置き換えられます。デフォルトは null で、これはフィールドが欠落していると見なされることを意味します。 |
store |
フィールド値は _source フィールドから別々に保存および取得可能であるべきですか? true または false (デフォルト)を受け入れます。 |
合成 _source
合成 _source
は、一般的に TSDB インデックス(index.mode
が time_series
に設定されているインデックス)のみで利用可能です。他のインデックスでは、合成 _source
は技術プレビュー中です。技術プレビューの機能は、将来のリリースで変更または削除される可能性があります。Elastic は問題を修正するために取り組みますが、技術プレビューの機能は公式 GA 機能のサポート SLA の対象ではありません。
token_count
フィールドは、デフォルト構成で 合成 _source
をサポートします。合成 _source
は copy_to
と一緒に使用することはできません。