0

次のようなドキュメントを保存します。

{
    "id": "dQesbpxeQniUWXpsnjPQ",
    "title": "Golf in Hamburg, Altona",
    "user": "CtGjEaDxSrhPbf7W7NcH",
    "location": {
        "id": "Q6sZhRHdiS3mP2innbJ9",
        "name": "Hamburg, Altona",
        "lat": 53.55,
        "lon": 9.93333,
        "slug": "hamburg-altona"
    },
    "_type": "announcement"
}

私たちはする必要がありannouncement.location.slugますnot_analyzed(結局のところ、それはナメクジです)

ただし、マッピングは行われません。次の設定があります。

Tire.index(@@index_name) do
  delete
  create(mappings: {
    announcement: {
      properties: {
        "id"       => { type: 'string', index: 'not_analyzed' },
        "user"     => { type: 'string', index: 'not_analyzed' },
        "location" => {
          type: 'geo_point',
          properties: {
            "slug" => { type: 'string', index: 'not_analyzed' }
          }
        },
        "times"    => { type: 'string', analyzer: 'keyword'   },
        "sport" => {
          "properties" => {
            "slug" => { type: 'string', index: 'not_analyzed' }
          }
        }
      }
    }
  },
  settings: {
    index: {
      number_of_shards: 1,
      number_of_replicas: 0
    }
  })
  refresh
end

注:構文の同じマッピングcurlも機能しませんが、SOの方が読みにくいため、Rubyコードを投稿しています。

geo_pointドキュメントのその部分の他のすべてのマッピングをオーバーライドしているようです。ドキュメントは同意しているようです。

このオプションを使用する方法があると確信していlat_lonますが、それがどのように機能するかについてのドキュメントは見つかりません。lat(私は、個人とlonフィールドを設定でマップすると仮定しlat_lonます)

フィールドタイプを使用multiたかったのですが、メインドキュメント属性のサブツリー全体には当てはまらないようです。

データモデル全体を変更せずに続行するにはどうすればよいですか?

4

1 に答える 1

2

geo_point は完全なデータ型であり、プロパティ (メタ) を追加できないため、モデルを変更する必要があると思います。

于 2012-09-06T17:14:25.787 に答える