目前我用 php 创建一个 index,ES 版本:6.7.2:
<?php
$client = ClientBuilder::create()->build();
$params = [
'index' => 'MyIndex',
'body' => [
'settings' => [
'number_of_shards' => 2,
'number_of_replicas' => 0
],
'MyType' => [
'properties' => [
'title' => [
'type'=>'text',
'analyzer'=>'thai',
],
'createTime' => [
'type'=>'integer',
'index' => false
],
'uid' => [
'type'=>'integer'
]
]
]
]
];
$client->indices()->create($params);
?>
目前几乎 query 不出来任何结果,一查 ES 官网,发现居然写错了,少加了一个 mapping,正确的应该是:
<?php
$client = ClientBuilder::create()->build();
$params = [
'index' => 'MyIndex',
'body' => [
'settings' => [
'number_of_shards' => 2,
'number_of_replicas' => 0
],
'mappings' => [
'MyType' => [
'_source' => [
'enabled' => true
],
'properties' => [
'title' => [
'type'=>'text',
'analyzer'=>'thai',
],
'createTime' => [
'type'=>'integer',
'index' => false
],
'uid' => [
'type'=>'integer'
]
]
]
]
]
];
$client->indices()->create($params);
?>
那么问题来了:
- 为什么少了一个 mappings,ES 居然不报错???那么它默认是怎样处理该代码的,以怎样的 analyzer 和 tokenizer 来创建的 index ?目前只能搜索出有空格的结果,比如,我想搜“ABC”,那么“ABC DEF WXYZ”能搜出来,但“ABCDEFGHIJK”就搜不出来
- 目前处于生产环境中,那么该如何补救?