创建索引
$hosts = [
"127.0.0.1:9300",
"127.0.0.1:9200",
"127.0.0.1:9400",
//"47.96.101.100:9200"
];
//地址池
//setRetries 设置链接次数,例如,如果你有 10 个节点,设置 setRetries(5) ,客户端便会最多发送 5 次连接命令。如果 5 个节点返回的结果都是 connection timeout,那么客户端会抛出 OperationTimeoutException 。由于连接池处于使用状态,这些节点也可能会被标记为死节点。
$client = \Elasticsearch\ClientBuilder::create()->setHosts($hosts)->setRetries(3)->build();
$params = [
'index'=>'bill_management',
'type'=>'all',
//_source取出特定的字段
/*'_source'=>[
'name',
'age'
],*/
'id'=>7,
'body'=>[
'name'=>'z3s',
//'age'=>22
],
'client' => [ 'ignore' => [400, 404],
'timeout' => 1, // ten second timeout
'connect_timeout' => 1,
'future' => 'lazy'
]
];
$re = $client->create($params); //create 当存在相同的index+type+id的时候报错
//$re = $client->index($params); //index当存在相同的index+type+id的时候,进行覆盖操作
//$doc = $future['_source'];
var_dump($re->wait());
mapping使用
$params = [
'index' => 'bill_management',
'body' => [
'mappings' => [
'p' => [ //某个type
'properties' => [ #开始定义这个type的属性值(也可以用fields)
'all' => [
'type' => 'text', //字符串: text|keyword 整数 : byte, short, integer, long 浮点数: float, double 布尔型: boolean 日期: date
//keyword:存储数据时候,不会分词建立索引,用的时候不用analyzer
//text:存储数据时候,会自动分词,并生成索引(这是很智能的,但在有些字段里面是没用的,所以对于有些字段使用text则浪费了空间)。
'analyzer' => 'ik_max_word',
],
'name' => [
'type' => 'keyword', //字符串: text|keyword 整数 : byte, short, integer, long 浮点数: float, double 布尔型: boolean 日期: date
//keyword:存储数据时候,不会分词建立索引,用的时候不用analyzer
//text:存储数据时候,会自动分词,并生成索引(这是很智能的,但在有些字段里面是没用的,所以对于有些字段使用text则浪费了空间)。
],
'age' => [
'type' => 'integer',
]
]
]
]
]
];
//$params=['index' => 'bill_management'];
$a = $client->indices()->create($params);