私は決して問い合わせることのないフィールドの数を持つドキュメントを持っていますので、リソースを節約するためにこれらのフィールドのインデックスを無効にしたいと思います。私は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. Timelionでインデックスと日付/時刻フィールドを指定する方法は?
- 5. Elasticsearch:複数のインデックスに存在するフィールドを条件付きでフィルタリングする
- 6. ElasticSearchはJavaでインデックス作成のフィールドを削除します
- 7. 検索elasticsearchフィールドにダッシュを付けたフィールド名
- 8. MongoDBでTTLを使用した追加フィールドのインデックス付け
- 9. Elasticsearchインデックスの特定のフィールドを更新するにはどうすればよいですか? Elasticsearchで
- 10. HibernateSearchはFieldBridge経由でインデックス付けされた仮想フィールドをクエリします。
- 11. mysqlの一意のフィールドにインデックス名を指定する方法
- 12. Elasticsearchは、私は、インデックスに怒鳴るデータを持っている日付フィールドに
- 13. elasticsearchでインデックスを再インデックスする - ELK
- 14. ElasticSearch:私はそれ内の文書の多くが付いてElasticSearchインデックスを有する複数の同一フィールド
- 15. Elasticsearchのクエリまたはフィルタで、特定のドキュメントタイプのフィールドを指定する方法はありますか?
- 16. インデックスを指定すると、別のdivリストのそのインデックスを見つける
- 17. elasticsearch:最初に実行するクエリを指定します。
- 18. ElasticSearchでフィールドに含まれるインデックス値を取得する方法は?
- 19. geoNearでインデックスを指定する方法
- 20. インデックスで項目をアドレス指定する
- 21. ElasticSearchネスト - インデックス名だけを照会
- 22. Lucene - インデックスを付ける必要のない文字列フィールド
- 23. ElasticSearchのNEST再インデックス、編集名フィールド
- 24. インデックスが付けられたフィールドと関連しないフィールドを含むMongoDBクエリ
- 25. Elasticsearchでインデックス付きドキュメントを更新する
- 26. ElasticSearchで日付範囲をインデックスする方法
- 27. mongodb 3.4.2 InvalidIndexSpecificationOptionエラー: 'unique'フィールドが_idインデックス指定に無効です
- 28. C++で指定したテキストに色を付ける方法
- 29. Elasticsearchで1つのフィールドで範囲を検索し、別のフィールドで範囲を指定できますか?本文なしでGETを使用しますか?
- 30. NESTを使用してElasticsearchのインデックスを指定するにはどうすればよいですか?
ことをありがとう!ですから、私はその機能を使用していないので、 '_all'を無効にすることができます。うまくいけば、インデックスのサイズを小さくする必要があります。そして、私がよく理解していれば、私が持っているインデックスサイズを減らす唯一の選択肢は、検索しないフィールドに 'not_analyzed'を指定することです。 – Michael
さて、インデックスサイズを変更するだけではなく、データのインデックス方法を変更します。フィールドを分析しないと、単一のトークンが含まれます。トークナイザやトークンフィルタは使用されません。それに文が含まれている場合(空白などで)、一致するようにするには、正確な文全体を照会する必要があります。フィールドを照会しない場合は、indexed = falseを設定します。 – javanna
それは私が思ったことですね。説明ありがとう。私は自分の文書に「説明」や「リンク」のようないくつかのフィールドを持っていますので、検索する必要はありません。それを分析するためのリソースが無駄です。そして、インデックス全体をメモリ( '{" index ":{" store.type ":" memory "}}')で実行することをテストしていますので、インデックスサイズが重要な要素になります。 – Michael