>  기사  >  php教程  >  Laravel5.3+Scout+ElasticSearch5.0 참고사항

Laravel5.3+Scout+ElasticSearch5.0 참고사항

大家讲道理
大家讲道理원래의
2016-11-11 09:11:111390검색

ElasticSearch5.0

es5.0을 설치하는 데 아무런 의미가 없습니다. 공식 문서 프로세스만 따르면 일반적으로 성공적으로 설치하고 실행할 수 있습니다. 🎜>그러나 온라인 환경에서 다른 사람들은 여전히 ​​es2.4를 사용할 때 첫째로 프로젝트가 더 크고 둘째로 jdk 버전마다 메모리 요구 사항이 다릅니다.
그리고 es5.0 이후에는 취소로 인해 site-plugin, 많은 플러그인이 이전을 따를 수 없습니다. 예를 들어 elasticSearch-head는 매우 일반적으로 사용되며 이제 Grunt를 통해 실행하거나 다른 플러그인을 Nginx 또는 Apache의 www 디렉토리에 넣어 실행해야 합니다.

설치 후 발생할 수 있는 작은 문제:

  • $JAVA_HOME을 찾을 수 없지만 실제로는 /etc/default/elasticsearch를 설정하고 JAVA_HOME을 찾을 수 있습니다. =/usr/local/java/jdk1.8.0_101/jre;

  • es5.0이 내 메모리의 거의 2.5G를 차지한다면 설치하지 마세요. 물론, 이제 대부분의 컴퓨터에는 많은 메모리가 있습니다.

Laravel/Scout 설치 및 구성

다음 세 줄을 추가하세요. .env 파일의 맨 아래

SCOUT_DRIVER=customElasticSearchELASTICSEARCH_INDEX=boxELASTICSEARCH_HOST=localhost:9200


이 세 줄의 구성은 Scout에서 사용하는 엔진과 주소를 결정하는 데 사용됩니다.

독자들은 내 드라이버가 elasticsearch가 아닌 customElasticSearch임을 알 수 있습니다.

ElasticSearchEngine을 열고 PerformSearch 메서드를 찾으면 내부에서 이 코드 조각을 찾을 수 있기 때문입니다

$query = [            'index' =>  $this->index,            'type'  =>  $builder->model->searchableAs(),            'body' => [                'query' => [                    'filtered' => [                        'filter' => $filters,                        'query' => [                            'bool' => [                                'must' => $matches
                            ]
                        ],
                    ],
                ],
            ],
        ];
search Method를 직접 실행하면 필터링이 취소되었다는 메시지가 나옵니다. 자세한 내용은 공식 홈페이지 주소를 참조하세요.

하지만 다행히 Scout에서는 커스텀 엔진을 제공합니다. .

그래서 새로운 customElasticSearchEngine을 만들고, elasticSearchEngine을 상속하고, PerformSearch 메서드를 다시 작성했습니다. 그 안에서

这只是演示, 要真使用以后一定要改$matches[] = [            'match' => [                '字段名' => $builder->query
            ]
        ];
$query = [            'index' => $this->index,            'type' => $builder->model->searchableAs(),            'body' => [                'query' => [                    'bool' => [                        'filter' => $filters,                        'must' => $matches,
                    ],
                ],
            ],
        ];

사용 시 발생할 수 있는 함정 두 군데를 수정했습니다. Scout

데이터베이스의 테이블에 자동 증가 기본 키가 있는 id라는 필드가 있지만 그렇지 않은 경우

elasticSearch에서 해당 필드의 ID를 사용하려는 경우 데이터 테이블es 문서의 ID로 사용하려면 model $primaryKey를 변경해야 합니다. public $incrementing = false;, 현재 데이터 테이블의 다른 값을 지정하여 es의 ID로 사용할 수 있습니다. es 데이터 _id의 일부가 데이터베이스id, 나머지 부분은 귀하가 새로 지정하며, 이는 검색 및 기타 작업에 영향을 미칩니다.


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.