2014年5月13日 星期二

[elasticsearch] mapping 與 solr schema.xml


solr 內使用 schema.xml 來定義 索引的 document 內所含有的欄位是什麼樣的type,要用怎樣的分詞,還要要怎麼parse query string。

同樣的ElasticSearch 與 Solr 底層都是使用 Lucene index kernel 來做 index。
在 elasticsearch 內,這樣的觀念是比較隱含的,但是並不表示 Elasticsearch沒有field的概念。

在 ElasticSearch 內可以透過 mapping api 的方式取得 該index mapping的定義。

下面有個取得mapping的範例。
curl -XGET 'http://localhost:9200/twitter/_mapping/tweet'
經由使用這樣的syntax 你就可以取得
curl -XGET 'http://hostname:port/{index}/{type}/_mapping'
index ,type 裡面都可以傳遞用 "," 隔開的字串下去

curl -XGET 'http://localhost:9200/_mapping/pc,twitter'
curl -XGET 'http://localhost:9200/_all/_mapping/pc,twitter'

可能有能想要知道ElasticSearch Cluster 內的所有 mapping 欄位資訊,就可以使用

"_all" 來表示所有的index name,或者是直接在 / 下使用 "_mapping" 來查詢。

curl -XGET 'http://hostname:port/_all/_mapping'

下面兩者結果是等價的。
curl -XGET 'http://localhost:9200/_all/_mapping'
curl -XGET 'http://localhost:9200/_mapping'
透過這樣方式,就可以得知該 ElasticSearch Cluster 所有index 內的欄位type。


Ref
SchemaXml - Solr Wiki
http://wiki.apache.org/solr/SchemaXml

The schema.xml file contains all of the details about which fields your documents can contain, and how those fields should be dealt with when adding documents to the index, or when querying those fields.

沒有留言:

張貼留言