私はこれについてたくさん検索し、多くの組み合わせを試しました。しかし、すべての試みに失敗しました:(。
ここに私の問題があります: 以下のようにエラスティック検索で jdbc-river を作成しました:
{
"type" : "jdbc",
"jdbc" : {
"driver" : "oracle.jdbc.driver.OracleDriver",
"url" : "jdbc:oracle:thin:@//ip:1521/db",
"user" : "user",
"password" : "pwd",
"sql" : "select f1, f2, f3 from table"
},
"index" : {
"index" : "subject2",
"type" : "name2",
"settings": {
"analysis": {
"analyzer": {
"my_analizer": {
"type": "custom",
"tokenizer": "my_pattern_tokenizer",
"filter": []
}
},
"tokenizer": {
"my_pattern_tokenizer": {
"type": "pattern",
"pattern": "$^"
}
},
"filter": []
}
}
},
"mappings":
{
"subject2":
{
"properties" : {
"f1" : {"index" : "not_analyzed", "store": "yes", "analyzer": "my_analizer", "search_analyzer": "keyword", "type": "string"},
"f2" : {"index" : "not_analyzed", "store": "yes", "analyzer": "my_analizer", "search_analyzer": "keyword", "type": "string"},
"f3" : {"index" : "not_analyzed", "store": "yes", "analyzer": "my_analizer", "search_analyzer": "keyword", "type": "string"}
}
}
}
}
ユーザーが入力した値を「f1」フィールドのデータと一致させるオートコンプリート機能を、現時点では最初から実装したいと考えています。
f1 フィールドのデータは次のようになります
- 「ハーディン郡ABC」
- 「XYZの国」
- 「ブラブラ郡」
- 「カウンティ オブ ブラ セカンド」
要件に従っているのは、ユーザーが「Coun」と入力すると、結果の 2 番目、3 番目、および 4 番目が最初ではなくエラスティック検索によって返される必要があることです。完全な単語をトークンにする「キーワード」アナライザーについて読みましたが、この場合に機能しないことはわかりません。
また、ユーザーが「County of B」と入力すると、エラスティック検索によって 3 番目と 4 番目のオプションが返されます。
以下は、結果を照会する形式です。オプション1
{"from":0,"size":10, "query":{ "field" : { "f1" : "count*" } } }
オプション 2
{"from":0,"size":10, "query":{ "span_first" : {
"match" : {
"span_term" : { "COMPANY" : "hardin" }
},
"end" : 1
} } }
私がここで何をしているのか教えてください。前もって感謝します。