私は決して問い合わせることのないフィールドの数を持つドキュメントを持っていますので、リソースを節約するためにこれらのフィールドのインデックスを無効にしたいと思います。私はdisable the _all
fieldにする必要があると信じていますが、次にどのフィールドにインデックスを付けるかを指定しますか?ElasticSearchでインデックスを付けるフィールドを指定します。
答えて
デフォルトでは、すべてのフィールドは特別なフィールドの_all内でも索引付けされています。これは、いわゆるキャッチオール機能をそのまま使用できます。しかし、あなたはinclude_in_all
オプションを使用して、_allフィールドに追加するかしないかどうか、あなたのマッピングで、各フィールドに指定することができます
"person" : {
"properties" : {
"name" : {
"type" : "string", "store" : "yes", "include_in_all" : false
}
}
}
上記の例では、獲得した名前のフィールドのデフォルトの動作を無効にします_allフィールドの一部である必要はありません。それ以外の場合は
、あなたがもう一度あなたのマッピングでは、このようにそれを無効にすることができ、特定のタイプのために全く_allフィールドを必要としない場合:あなたはそれを無効にすると、あなたのフィールドはまだインデックスが作成されます
"person" : {
"_all" : {"enabled" : false},
"properties" : {
"name" : {
"type" : "string", "store" : "yes"
}
}
}
あなたは_allが提供する包括的な機能を持っていないでしょう。 _all特殊フィールドに頼るのではなく、特定のフィールドを照会する必要があります。実際に、クエリを実行してフィールドを指定しなかった場合、elasticsearchはクエリのデフォルトフィールドをオーバーライドしない限り、フードの_allフィールドをクエリします。
各文字列フィールドは、index
paramをマッピング設定に持ちます。defaults toanalyzed
です。これは、_allフィールドのほかに、各フィールドが単独で索引付けされることを意味します。
そして、それが参照して言われ_all fieldのそれ:
デフォルトで、それが有効になっていると、すべてのフィールドは、使いやすさのために、それに含まれています。 _allフィールドにそれらを含めるかどうかに照会しなければならない分野については
"mappings": { "your_mapping": { "properties": { "field_not_to_index": { "type": "string", "include_in_all": false, "index": "no" } } } }
:あなたは(_allフィールドが有効になっている場合)を指定する必要がフィールドのための完全に無効にインデックスへ
ので
、 _allフィールドを使用してクエリを実行する場合は、リソースを保存するために"index": "no"
を使用してください。または、これらのフィールドでクエリを実行する場合は、index
パラメータをすべて正の値(analyzed
またはnot_analyzed
)で使用し、リソースを保存する_allフィールドを無効にします。
には、以下の理想的なあなたは、フィールドのプロパティでnoに「インデックス」フラグを設定するべきではありません、あなたの問題のために弾性検索 http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/mapping-intro.html
でインデックスの設定を理解するための重要なドキュメントのページです。
このリンクでは、 "index": "not_analyzed"と表示されています。しかし、私は索引付けと分析がESの明確な概念であると考えました。 'いいえ'は 'not_analyzed'とは異なる設定ですか?どうか明らかにしてください。 – szeitlin
'analyze' 最初に文字列を分析し、それにインデックスを付けます。つまり、このフィールドをフルテキストとして索引付けします。 'not_analyzed' このフィールドにはインデックスを付けるので、検索可能ですが、指定したとおりに正確に値をインデックスします。それを分析しないでください。 'no' このフィールドはまったく索引付けしないでください。このフィールドは検索できません。 – Tjorriemorrie
動的インデックスと_allインデックスをfalseに設定します。マッピングに必要なフィールドを指定します。 https://www.elastic.co/guide/en/elasticsearch/guide/current/dynamic-mapping.html
{
"mappings":{
"candidates":{
"_all":{
"enabled":false
},
"dynamic": "false",
"properties":{
"tags":{
"type":"text"
},
"derivedAttributes":{
"properties":{
"city":{
"type":"text"
},
"zip5":{
"type":"keyword"
}
}
}
}
}
}
}
- 1. ElasticSearch:マッピングで指定されたフィールドのみをインデックス化します
- 2. Elasticsearchのクエリまたはフィルタで、特定のドキュメントタイプのフィールドを指定する方法はありますか?
- 3. Elasticsearchでインデックス付きドキュメントを更新する
- 4. mysqlの一意のフィールドにインデックス名を指定する方法
- 5. ElasticSearchでインデックスを再インデックスしてシャード数を変更する
- 6. ElasticSearchのlogstashインデックスのフィールドを更新する
- 7. Elasticsearchで1つのフィールドで範囲を検索し、別のフィールドで範囲を指定できますか?本文なしでGETを使用しますか?
- 8. 特定のフィールドのelasticsearchルーティング
- 9. elasticsearchで古いインデックスを削除する
- 10. Railsアプリケーションでどのフィールドにインデックスを付けるべきですか?
- 11. elasticsearchテンプレートがelasticsearchで新しいインデックスを作成していません1.7
- 12. Elasticsearch解析PDFをインデックス付けしようとすると例外エラーが発生する
- 13. Thinking Sphinxでの検索条件の計算フィールドのインデックス付け
- 14. 特定の日付をElasticsearchの日付/時刻フィールドにどのようにマップするのですか?
- 15. ここで、私の_revフィールドはelasticsearchインデックスのcouchdbから
- 16. WikipediaのインデックスをElasticsearchにインポート
- 17. elasticsearchオブジェクトをインデックスに挿入
- 18. lucene.netでは、フィールド名を指定せずにコンテンツを検索できます。インデックスに登録されているすべてのフィールドを検索しますか?
- 19. ハッシングVSインデックス付け
- 20. recursive findのフィールドをcakephpで指定します。
- 21. タプル内の複数のフィールドにタプルの指定フィールドを掛ける方法
- 22. elasticsearchの特定のフィールド値のみを更新する
- 23. ElasticsearchのドキュメントIDを指定せずにバルクインデックスを実行できますか?
- 24. Oracleはtablenameにインデックス名を指定しています
- 25. DynamoDB - 2つのインデックス名を指定します。@DynamoDbIndexHashkey globalSecondaryIndexName
- 26. ElasticSearchを使用したCouchDBビューの索引付け
- 27. 指定された値を持つすべての行を列に貼り付けて貼り付けます
- 28. ElasticSearchインデックスから最新のレコードを返します
- 29. nodejsを使用してelasticsearchに文書を索引付けする
- 30. SQLalchemy使用するインデックスを指定してください
ことをありがとう!ですから、私はその機能を使用していないので、 '_all'を無効にすることができます。うまくいけば、インデックスのサイズを小さくする必要があります。そして、私がよく理解していれば、私が持っているインデックスサイズを減らす唯一の選択肢は、検索しないフィールドに 'not_analyzed'を指定することです。 – Michael
さて、インデックスサイズを変更するだけではなく、データのインデックス方法を変更します。フィールドを分析しないと、単一のトークンが含まれます。トークナイザやトークンフィルタは使用されません。それに文が含まれている場合(空白などで)、一致するようにするには、正確な文全体を照会する必要があります。フィールドを照会しない場合は、indexed = falseを設定します。 – javanna
それは私が思ったことですね。説明ありがとう。私は自分の文書に「説明」や「リンク」のようないくつかのフィールドを持っていますので、検索する必要はありません。それを分析するためのリソースが無駄です。そして、インデックス全体をメモリ( '{" index ":{" store.type ":" memory "}}')で実行することをテストしていますので、インデックスサイズが重要な要素になります。 – Michael