购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.2 建立索引

在Elasticsearch中,可以通过Index API来对文档进行索引操作。在建立索引文件时,可以设置分布式索引文件的Shards数量和Replicas数量,如可通过使用{index}/_settings(指定Index名称的配置)子句,修改索引文件的配置。

代码段2.1实现了对名为myweibo2的索引文件的创建工作(注意是通过PUT方式向系统提交索引请求),方法中指定了索引数据的shards数量和replicas数量(如果不指定它们,系统会采用默认值)。注意,这里的参数-d后面的是提交的数据。

//代码段2.1:使用JSON数据格式来创建索引。执行后会新建一个名为myweibo2的新的索引文件

curl -XPUT 'http://localhost:9200/myweibo2/' -d '{
"settings":  {
    "index":  {
        "number_of_shards":  5,
        "number_of_replicas":  1
    }
}
}'

也可以采用_settings子句实现其他相应功能。下面的代码段2.2修改myweibo1索引文件,并将其replicas副本量改为指定的数据,图2.2显示该索引的副本已变成设定的数值了。

//代码段2.2:使用_settings子句修改索引文件

curl -XPUT 'localhost:9200/myweibo1/_settings' -d '
{
    "index":  {
            "number_of_replicas":  7
        }
}'

Tips: 上述语句中写number_of_replicas参数的地方也可换成如下参数:

  • number_of_replicas——设置当前索引的副本数量。
  • blocks.read_only——如设为true,则当前索引只允许读,不允许写或更新。
  • blocks.read——如设为true,则禁止读取操作。
  • blocks.write——如设为true,则禁止写操作。
  • blocks.metadata——如设为true,则禁止对metadata操作。
0037-01

图2.2 索引文件属性信息

对于{index}/_settings子句,如果选择的HTTP操作类型是GET(见下述语句),则可以获取当前索引文件weibo的较为详细的配置信息。

curl -XGET 'http://localhost:9200/weibo/_settings'

返回值如下:

{
    "weibo":  {
    "settings":  {
        "index":  {
            "uuid":  "Z3_EcCZHRb255LdLHol1ww",
            "number_of_replicas":  "2",
            "number_of_shards":  "5",
            "version":  {
                "created":  "1000099"
                    }
                }
            }
        }
}

类似地,采用如下的类似语句,可以一次性获得多个索引文件(例子是返回weibo、weibo2这两个索引文件)的配置信息:

curl -XGET 'http://localhost:9200/weibo, weibo2/_settings'

还可以使用_all参数来获取所有的索引的配置信息:

curl -XGET 'http://localhost:9200/_all/_settings'

也可以使用通配符来获取一批索引的配置参数,语句如下所示:

curl -XGET 'http://localhost:9200/.marvel*/_settings

另外,也可通过指定JSON格式的数据来向指定的索引文件中插入数据,并建立相应的索引。代码段2.3新建了一个索引(名为myweibo3)及其type文件(名为example),并向其中写入指定JSON格式的字段信息(这些Fields包括user、post_date、mymessage等)。执行完毕后的结果如图2.3所示。

//代码段2.3:指定JSON格式的数据来向指定的Index文件中插入数据。自动生成ID号

curl -XPUT 'http://localhost:9200/myweibo3/example/_create -d '{
    "user":  "Alan",
    "post_date":  "2014-11-26T08:00:00",
    "mymessage":  "this is an example on operation type on create"
}'
0038-01

图2.3 向新建的索引文件中插入指定的信息

Tips: Elasticsearch的内置字段主要有_uid、_id、_type、_source、_all、_analyzer、_boost、_parent、_routing、_index、_size、_timestamp、_ttl等,字段类型主要有String、Integer/long、Float/double、Boolean、Null、Date等。在图2.3中已经看到了_index、_type、_id、_score这几个内置字段(单词本身所表示的含义此处不再赘述)。图中显示的其他字段(即user、post_date、memessage)是用户以JSON格式自定义的字段。

代码段2.4是向刚才新建立的索引文件myweibo3的类型文件example中添加文档的语句。这个文档共有3个字段,它们分别是user、post_date、mymessage。和前述语句不同的是,在URL最后的参数3是指定了这个新插入的Document的ID号。该语句的执行结果如图2.4所示。

//代码段2.4:指定新插入索引数据的ID号

curl -XPUT 'http://localhost:9200/myweibo3/example/3' -d '{
"user":  "LiMing",
"post_date":  "2014-11-24T14:12:12",
"message":  "Hello Tom"
}'
0039-01

图2.4 向指定的索引文件中插入指定内容的信息

Tips: 上面例子中指定了这个Document的ID为3,但是也可以不指定ID。这样,Elasticsearch会自动生成一个ID号并在结果中返回。

在建立索引文件后,可以通过语句获取指定索引文件的状态信息,如curl-XGET' localhost:9200/indexfile/_stats',注意这里使用了/_stats参数。图2.5给出查询索引文件返回的状态信息。

0040-01

图2.5 查询索引文件状态信息

在图2.5返回的对象中,可以看到几个对象:primaries(包含当前节点之上的所有主分片的信息)、total(包含所有分片及副本的信息)。另外,所有这些对象都包含如下对象:

Tips: 也可以同时给出多个索引的统计信息,如“/索引1,索引2,索引3/_stats”。 WeiQ1GnAg+8IQrl/Hppba5oIG/5OO6p2tnG16d33/c62g06U/aj6pArkhLWyWq2W

点击中间区域
呼出菜单
上一章
目录
下一章
×