EStermの大文字と小文字

1869 ワード

EStermの大文字と小文字

  • 問題
  • 問題解決
  • 問題を再現
  • mappingマッピングおよび_の表示analyze APIテスト
  • 位置決め問題
  • 結論
  • くどいことを見たくなければ、直接結論に飛び込むことができます.

    に質問


    同僚はES検索は、検索できるものもあれば、データがあると確信しているものもありますが、検索できません.

    問題を解決する


    問題を再現


    検索するインデックスとフィールド、および検索パラメータを同僚に要求し、同僚が正しい姿勢を使用していることを確認します.結果はやはり同僚が言ったように、問題が再現され、一致しなかった.

    mappingマッピングの表示と_analyze APIテスト


    このフィールドはtypeがtext分詞方式でカスタム正規分詞器に「,」(カンマ)で分割されていることが分かった.使用_analyze分詞テストデータはすべて正常です
    GET picture/_analyze
    {
      "text": " , ,2014,1-5W",
      "field": "tag3"
    }
    

    結果
    {
      "tokens": [
        {
          "token": " ",
          "start_offset": 0,
          "end_offset": 2,
          "type": "word",
          "position": 0
        },
        {
          "token": " ",
          "start_offset": 3,
          "end_offset": 5,
          "type": "word",
          "position": 1
        },
        {
          "token": "2014",
          "start_offset": 6,
          "end_offset": 10,
          "type": "word",
          "position": 2
        },
        {
          "token": "1-5w",// W  
          "start_offset": 11,
          "end_offset": 15,
          "type": "word",
          "position": 3
        }
      ]
    }
    

    位置決めの問題


    ドキュメントの保存はこちらがすべて正常で、それではクエリーの时の姿势に问题があって、DSLクエリーの文を分析して使用するtermの行うマッチングを発见して、上の再现の问题の中ですでに中国语のデータが正常であることを発见して、アルファベットのが问题があります.termマッチングが最小の単位ではマッチング語は処理されず、matchマッチングを試してデータを正常に検索できます.matchはマッチング語を処理します.例えば、分詞、大文字が小文字になります.比較したところ,やはり文書内には小文字が格納されているが,マッチング語は大文字であるためtermではデータにマッチングできないことが分かった.

    結論


    termは検索語を処理せず,どのように入力すればよいかを扱うので,termを用いてマッチングする場合はターゲットフィールドに分詞器が使用されているか,大文字と小文字に注意する.