目次
ESの基礎となるインデックスの原則
IKトークナイザー
1.定義:テキスト内のキーワードを分割することです
私はシャオミンのクラスメートです
単語セグメンテーションの原則:キーワードを分割してストップワードとストップワードを削除する
2. ESで提供単語分割
1.デフォルトの標準アナライザー標準アナライザー英語:単語のセグメンテーション中国語:1文字の単語のセグメンテーション
2.シンプルでシンプルなアナライザー英語:単語のセグメンテーション は数字を削除します 中国語:単語のセグメンテーションなし
3.さまざまなトークナイザーをテストします
GET /_analyzer
{
"analyzer":"simple",
"text":"redis 非常好用 111"
}
- 標準セグメンテーションの結果は次のとおりです。redisは非常に使いやすい111
- 単純な単語セグメンテーションの結果は次のとおりです。redisは非常に使いやすいです
4.ESトークナイザーに基づくgithubIKトークナイザー
注:IKトークナイザーとESバージョンの使用は厳密に一貫している必要があります
5. ik_max_wordとik_smartの違いは何ですか?
- ik_max_word:テキストは、「私はシャオミンのクラスメートです」を「私はシャオミンのクラスメートです」、「私は」、「私はシャオミンです」、「シャオミンのクラスメート」に分割するなど、最も細かい粒度で分割されます。 、「クラスメート」は、考えられるすべての組み合わせを使い果たします。私はシャオミンのクラスメートです。
- ik_smart:「私はシャオミンのクラスメートです」を「私はシャオミンのクラスメートです」に分割するなど、最も粗い分割を行います
PUT /emp
{
"mappings":{
"emp":{
"properties":{
"name":{
"type":"text",
"analyzer":"ik_max_word"
},
"age":{
"type":"integer"
},
"bir":{
"type":"date"
},
"content":{
"type":"text",
"analyzer":"ik_max_word"
},
"address":{
"type":"keyword"
}
}
}
}
}
IKで拡張ワードとストップワードをカスタマイズする
1.拡張ワード
定義:既存のikトークナイザーは、この単語をキーワードにセグメント化できませんが、特定の単語がキーワードになることを期待しています
ikトークナイザーなどは、いくつかの人気のあるオンライン単語などのキーワードに分割できます
IK構成ファイルの構成:ESインストールディレクトリの下の/ plugins / ik / configディレクトリ内の名前:IKAnalyzer.cfg.xml
構成ファイルを変更して、次の構成を追加します。
<!-ユーザーはここで独自の拡張辞書を構成できます>
<entry key = "ext_dict"> ext.dic </ entry>
2.ストップワード
定義:既存のikトークナイザーはキーワードを1つの単語に分割しますが、何らかの理由でこの単語をキーワードとして表示できません
<entry key = "ext_stopwords"> stopext.dic </ entry>
3.リモート拡張辞書を構成します
EN中クエリ
1.クエリ文字列!クエリDSLクエリ
キーワードクエリ----->スコアの計算、並べ替えなどのシリーズ
2. FilterQueyフィルターのクエリ効率は比較的高い
条件を満たすデータを除外する-------->ドキュメントのスコアは計算、並べ替え、一般的に使用されない一般的に使用されるフィッターの結果を自動的に除外する
2つのクエリを組み合わせるには、bool式を使用する必要があります
注:filterQueryとqueryを組み合わせて使用する場合、fitterQueryのステートメントが最初に実行され、次にqueryのステートメントが実行されます。
フィルタリングは広範囲のデータのフィルタリングに適しており、クエリはデータを正確に照合するのに適しています。一般的なアプリケーションでは、最初にフィルターデータを使用してから、クエリマッチングデータを使用する必要があります。