tp6实现es 简单搜索

白俊遥博客




|PHP操作elastic| |

|-在 elasticsearch-php 中,几乎一切操作都是用关联数组来配置。REST 路径(endpoint)、文档和可选参数都是用关联数组来配置。


为了索引一个文档,我们要指定4部分信息:index,type,id 和一个 body。构建一个键值对的关联数组就可以完成上面的内容。body 的键值对格式与文档的数据保持一致性。(译者注:如 [“testField” ⇒ “abc”] 在文档中则为 {“testField” : “abc”}


在 composer.json 文件中引入 elasticsearch-php:


"require": {

        "elasticsearch/elasticsearch": "~6.0",

    },

composer update 也可指定更新 composer update elasticsearch/elasticsearch(尽量使用)


//如果更改端口号则需要 setHosts 更改端口号 不写默认9200


require '../vendor/autoload.php';

创建索引


 public function index()

    {

 

        //指定分词

        $client = ClientBuilder::create()->setHosts(['127.0.0.1:9200'])->build();

        $params = [

            'index' => 'asd',//创建的库名

            'body' => [

                'settings' => [

                    'number_of_shards' => 3,//分片

                    'number_of_replicas' => 2

                ],

                'mappings' => [

                    '_source' => [

                        'enabled' => true

                    ],

                    'properties' => [

                        'name' => [     //这个名字为字段名

                            'type' => 'text',

                            "analyzer" => "ik_max_word",  //分词器

                            "search_analyzer" => "ik_max_word"

                        ]

                    ]

                ]

            ]

        ];

        // Create the index with mappings and settings now

        $response = $client->indices()->create($params);

        echo $response;

    }

add


public function save()

    {

        //

        $client = ClientBuilder::create()->build();

        $params = [

            'index' => 'asd',//库名

            'type' => '_doc',

            //'id' => '1',

            'body' => ['name' => "",//要添加的内容

                'title'=>'',

                'content' => ""]

        ];

        $response = $client->index($params);

        print_r($response);

    }

搜索


public function read()

    {

//        $data = input();

//        dd($data);

        $client = ClientBuilder::create()->build();

        $params = [

            'index' => 'asd',//库名

            'type' => '_doc',

            'body' => [

                'query' => [

                    'match' => [ 'name' => '中国']

                    ]

                ]

            ];

        $results = $client->search($params);

        print_r($results);

 

 

    }


白俊遥博客
请先登录后发表评论
  • 最新评论
  • 总共0条评论