Home  >  Article  >  Backend Development  >  How to use Elasticsearch to implement search functions in PHP development

How to use Elasticsearch to implement search functions in PHP development

WBOY
WBOYOriginal
2023-06-27 12:59:201496browse

With the development of the Internet, the importance of search engines has attracted more and more attention. Search engines must not only be able to quickly search for relevant content, but also be efficient, stable, and scalable. As a popular distributed search engine, Elasticsearch has become the first choice for many companies in the search field. This article will introduce how to use PHP development and combine with Elasticsearch to implement search functions.

  1. Install Elasticsearch

Before we begin, we need to install Elasticsearch first. Elasticsearch is a Java application, therefore, we need to install Java first and download the compressed file of Elasticsearch. Then, unzip the file to the specified directory.

  1. Create an index

Creating an index is the first step in storing the documents we want to search in Elasticsearch. Normally, we can think of an index as a table in a database, which consists of a set of documents (data rows).

In PHP, we can use the Elasticsearch-PHP client to interact with Elasticsearch. You need to install the Elasticsearch-PHP package first:

composer require elasticsearch/elasticsearch

The following is a sample code to create an index:

require 'vendor/autoload.php';

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

$params = [
    'index' => 'my_index',
    'body' => [
        'settings' => [
            'number_of_shards' => 1,
            'number_of_replicas' => 0,
        ],
        'mappings' => [
            'my_type' => [
                'properties' => [
                    'title' => [
                        'type' => 'text'
                    ],
                    'content' => [
                        'type' => 'text'
                    ],
                    'post_date' => [
                        'type' => 'date',
                        'format' => 'yyyy-MM-dd HH:mm:ss'
                    ]
                ]
            ]
        ]
    ]
];

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

In the above code, we create a file named " my_index" and also defines a type named "my_type". We have defined three fields under the "my_type" type: title, content, and post_date.

  1. Add documents to the index

After creating the index, we need to add documents to the index that will return relevant results when searched.

For example, we add an article called "PHP Development Practice":

$params = [
    'index' => 'my_index',
    'type' => 'my_type',
    'id' => '1',
    'body' => [
        'title' => 'PHP开发实战',
        'content' => '本文介绍如何在PHP中使用Elasticsearch实现搜索功能。',
        'post_date' => date('Y-m-d H:i:s')
    ]
];

$response = $client->index($params);
  1. Search data

Search is the most basic and important part of Elasticsearch One of the most commonly used functions. Elasticsearch supports a variety of query methods, including:

  • Simple string query
  • Compound query
  • Range query
  • Exact value query
  • Regular expression query
  • Fuzzy query
  • Aggregation query and more

Here is a simple search example that utilizes text and date ranges Conditions:

$params = [
    'index' => 'my_index',
    'type' => 'my_type',
    'body' => [
        'query' => [
            'bool' => [
                'must' => [
                    [
                        'match' => [
                            'title' => 'PHP'
                        ]
                    ],
                    [
                        'range' => [
                            'post_date' => [
                                'gte' => '2021-01-01 00:00:00',
                                'lte' => '2021-01-31 23:59:59'
                            ]
                        ]
                    ]
                ]
            ]
        ]
    ]
];

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

In the above code, we use "match" and "range" queries to search for articles containing "PHP" in the title and results published within January 2021.

  1. Result processing

Finally, we need to return the search results to PHP and process them so that they can finally be presented to the user.

$hits = $response['hits']['hits'];
foreach ($hits as $hit) {
    echo $hit['_source']['title'] . "
";
    echo $hit['_source']['content'] . "
";
    echo $hit['_source']['post_date'] . "
";
}

In the above code, we traverse each document in the search result set and output the title, content and release date of the document.

Summary

This article introduces how to use PHP combined with Elasticsearch to implement search functions. By studying this article, you can learn about basic operations such as creating indexes, adding documents, searching data, and processing results. Of course, Elasticsearch also has many usage techniques, such as aggregation query, highlighting, sorting, etc. These techniques can help us better use Elasticsearch to implement search functions.

The above is the detailed content of How to use Elasticsearch to implement search functions in PHP development. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn