しかし、この「Fielddataはデフォルトでテキストフィールドで無効になっています。」という理由で、私のデータの一部は新しい弾性検索では機能しません。2.xより前に有効になっていたようです。私はelasticsearch 2.xから5.1に更新したという問題があります。デフォルトでは、elasticsearchのテキストフィールドでフィールドデータが無効にされています。
テキストフィールドにフィールドデータを自動的に有効にする方法はありますか?
私はこの
curl -XPUT http://localhost:9200/_template/template_1 -d '
{
"template": "*",
"mappings": {
"_default_": {
"properties": {
"fielddata-*": {
"type": "text",
"fielddata": true
}
}
}
}
}'
のようなコードを試してみましたが、elasticsearchは、フィールド名でそこにワイルドカードを理解していないように見えます。これを一時的に解決するには、30分ごとにpythonスクリプトを実行して、すべてのインデックスをスキャンし、新しいフィールドにfielddata = trueを追加しています。
問題は、elasticsearchに「これはクール」のような文字列データがあることです。
それを集約しようとしたときcurl -XPUT 'http://localhost:9200/example/exampleworking/1' -d '
{
"myfield": "this is cool"
}'
: "Fielddataはデフォルトでテキストフィールドで無効になっている[myFieldで]に真= fielddataを設定する"
curl 'http://localhost:9200/example/_search?pretty=true' -d '
{
"aggs": {
"foobar": {
"terms": {
"field": "myfield"
}
}
}
}'
ドキュメントをelasticsearch .keywordを使用することをお勧めフィールドデータを追加する代わりにしかし、それは私が望むデータを返すわけではありません。
curl 'http://localhost:9200/example/_search?pretty=true' -d '
{
"aggs": {
"foobar": {
"terms": {
"field": "myfield.keyword"
}
}
}
}'
戻り値:
"buckets" : [
{
"key" : "this is cool",
"doc_count" : 1
}
]
正しくありません。それから私はfielddata真追加し、すべてが動作します:
curl -XPUT 'http://localhost:9200/example/_mapping/exampleworking' -d '
{
"properties": {
"myfield": {
"type": "text",
"fielddata": true
}
}
}'
、その後集計
curl 'http://localhost:9200/example/_search?pretty=true' -d '
{
"aggs": {
"foobar": {
"terms": {
"field": "myfield"
}
}
}
}'
リターン正しい結果を、私はすべてにすべてのインデックスに自動的に=真このfielddataを追加することができますどのように
"buckets" : [
{
"key" : "cool",
"doc_count" : 1
},
{
"key" : "is",
"doc_count" : 1
},
{
"key" : "this",
"doc_count" : 1
}
]
テキストフィールド?それも可能ですか? elasticsearch 2.xでは、これは箱の中で動いています。
私は自分自身に答えます – Zetab