Retranslated as: "PHP syntax ElasticSearch"
P粉176203781
P粉176203781 2023-08-28 15:43:18
0
1
419

我是ElasticSearch的新手,对查询的工作原理不太了解... 我的索引示例

{ "_index" : "indexing001", "_type" : "_doc", "_id" : "3", "_version" : 1, "_seq_no" : 242, "_primary_term" : 2, "found" : true, "_source" : { "type" : 1, "sub_type" : null, "user" : { "id" : 1, "name" : "tk6z2 gcnouvqmr" }, "editor_user" : [ ], "content" : [ { "title" : "Title #3", "short_text" : "Article #3 short text", "full_text" : "Article #3 full text", "locale" : "de-DE" } ], "flags" : [ ], "location" : [ ], "start_date" : 1658793600, "end_date" : 1658793600, "_users" : [ ] } }

我想查询文本以匹配字段content.titlecontent.short_text,通过_users字段查询用户。例如,我的函数是:

public static function search( string $text = '', int $user = 0 ): array { try { $model = new someModelClass(); $fields = [ 'content.title', 'content.short_text', ]; $result = $model::find()->query( [ 'bool' => [ 'should' => [ 'multi_match' => [ 'query' => $text, 'fields' => $fields, ], ], 'filter' => [ [ 'term' => [ '_users.id' => $user ] ], [ 'term' => [ '_users' => [] ] ], ] ], ] )->all(); return $result; } catch ( Exception $e ) { throw new Exception( $e->getMessage() ); } }

将其转换为SQL应该是这样的:SELECT * FROM 'indexing001' WHERE (content.title LIKE %search% OR content.short_text LIKE %search%) AND (users.id = 1 OR users = '') 如何在ElasticSearch查询中编写它? 提前感谢!

P粉176203781
P粉176203781

reply all (1)
P粉421119778

In this case, I recommend using theElasticsearch-PHPclient.

Please use composerto installthe appropriate client.

For the following matching query

curl -XGET 'localhost:9200/my_index/_search' -d '{ "query" : { "match" : { "testField" : "abc" } } }'

You can query it in your PHP script as shown below

$params = [ 'index' => 'my_index', 'body' => [ 'query' => [ 'match' => [ 'testField' => 'abc' ] ] ] ]; $results = $client->search($params);

See more actionshere.

    Latest Downloads
    More>
    Web Effects
    Website Source Code
    Website Materials
    Front End Template
    About us Disclaimer Sitemap
    php.cn:Public welfare online PHP training,Help PHP learners grow quickly!