1

私はelasticsearchバージョン1.3.2に対して、この投稿の時点で最新のelasticsearch Riverプラグインバージョン1.3.0.4を使用しています。geo_point タイプでマッピングを作成しようとしていますが、失敗し続けています... これが私のマッピングです:

PUT /_river/tehotels/_meta
{
  "type": "jdbc",
  "jdbc": {
    "driver": "com.mysql.jdbc.Driver",
    "url": "jdbc:mysql://localhost:3306/blah",
    "user": "",
    "password": "",
    "sql": "select id,hotel_id,hotel_name,hotel_url,hotel_address,overview,city_id,star_rating,latitude as \"location.lat\",longitude as \"location.lon\" from agoda_hotels",
    "strategy": "simple",
    "autocommit": true,
    "fetchsize": 10,
    "max_rows": 0,
    "max_retries": 3,
    "max_retries_wait": "30s",
    "maxbulkactions": 1000,
    "maxconcurrentbulkactions": 8,
    "index": "teindex8",
    "type": "hotels",
    "type_mapping": {
      "hotels": {
        "properties": {
          "_id": {
            "type": "long"
          },
          "hotel_id": {
            "type": "long"
          },
          "hotel_name": {
            "type": "string"
          },
          "hotel_url": {
            "type": "string",
            "index": "no"
          },
          "hotel_address": {
            "type": "string",
            "index": "no"
          },
          "overview": {
            "type": "string",
            "index": "no"
          },
          "city_id": {
            "type": "long",
            "index": "no"
          },
          "star_rating": {
            "type": "float"
          },
          "location": {
            "type": "geo_point"
          }
        }
      }
    }
  }
}

しかし、_mappingコマンドを実行すると、次のように表示されます。

{
  "teindex8": {
    "mappings": {
      "hotels": {
        "properties": {
          "city_id": {
            "type": "long"
          },
          "hotel_address": {
            "type": "string"
          },
          "hotel_id": {
            "type": "long"
          },
          "hotel_name": {
            "type": "string"
          },
          "hotel_url": {
            "type": "string"
          },
          "id": {
            "type": "long"
          },
          "location": {
            "properties": {
              "lat": {
                "type": "string"
              },
              "lon": {
                "type": "string"
              }
            }
          },
          "overview": {
            "type": "string"
          },
          "star_rating": {
            "type": "double"
          }
        }
      }
    }
  }
}

「場所」は geo_point タイプではなく、プロパティのリストであることに注意してください。疑わしいように、場所を検索するクエリを発行すると、次のエラーが発生しました。

POST /teindex8/hotels/_search
{
  "query": {
    "filtered": {
      "filter": {
        "geo_distance": {
          "distance": "20 km",
          "location": "13.441111, 103.858611"
        }
      }
    }
  }
}

結果:

QueryParsingException[[teindex8] failed to find geo_point field [location]]; 

誰かが問題を解決する方法を知っていますか? ドキュメントに正確に従ったようです...

4

1 に答える 1

0

これは、elasticsearch のバージョンに関連しています。jdbc-river プラグインは、elasticsearch 1.3.2 とまだ互換性がありません。

ここに画像の説明を入力

Elasticsearch をアップグレードするときは、プラグインの互換性を常に確認する必要があります。一部対応していない場合があります。

jdbc-river プラグインについては、常に jprante プラグインrepoを確認する必要があります。

于 2014-08-14T08:02:37.037 に答える