APIs baseadas em Elasticsearch
Este texto foi traduzido usando IA. Se você deseja ver o texto original em inglês, clique aqui.
Mantemos índices do Elasticsearch para todos os posts no WordPress.com e todos os posts sincronizados por meio do plugin Jetpack.
Estes documentos descrevem as estruturas de índice e as APIs disponíveis para consulta. Essas APIs alimentam recursos disponíveis no WordPress VIP e no plano Profissional do Jetpack. A API de Posts relacionados do Jetpack também aceita filtros do Elasticsearch.
Disponibilidade da API
Existem três níveis de disponibilidade:
- WordPress VIP: Podemos criar um índice único para o seu conteúdo (taxa de configuração necessária). O código para construir o índice é open source. Frequentemente, recursos/campos experimentais ou funcionalidades que não conseguimos escalar para todos os sites são implementados aqui primeiro.
- Plano Profissional do Jetpack: Todos os sites Jetpack Pro (incluindo todos os sites VIP) são indexados em nosso cluster global do Elasticsearch e podem ser consultados com chamadas à API de Consulta do Elasticsearch. Não oferecemos suporte a toda a DSL de consulta do ES, mas suportamos a maior parte dela.
- Plano gratuito do Jetpack: Todos os sites são indexados para alimentar a API de Posts relacionados. A API aceita filtros personalizados do Elasticsearch.
Versões do Elasticsearch e Compatibilidade com Versões Anteriores
O projeto Elasticsearch está focado em melhorar continuamente suas APIs e, por isso, quebra regularmente a compatibilidade com versões anteriores. Nossas APIs se esforçam para manter a compatibilidade com versões anteriores e, por isso, há diversos recursos que optamos por não suportar por razões de segurança ou desempenho. Por exemplo, todo scripting está desabilitado em nossa API. Também não tentamos usar a versão mais recente do Elasticsearch porque estamos comprometidos com a compatibilidade com versões anteriores.
Nossa API de consulta se parece bastante com a API de Pesquisa do Elasticsearch da versão 2.4 do Elasticsearch. No entanto, aceitamos alguns recursos descontinuados e realizamos reescrita de consultas para manter a compatibilidade. Um bom exemplo é quando migramos do ES 1.x para o 2.x: todo o conteúdo precisou ser migrado do armazenamento no campo “content” com múltiplos analisadores para ser armazenado em um campo separado para cada analisador de idioma: “content.en”, “content.fr”, “content.default”, etc. Reescrevemos as consultas que ainda usam o campo “content”.
Bibliotecas Existentes
Provavelmente haverá momentos em que teremos que quebrar a compatibilidade com versões anteriores (esperamos que de formas menores). A melhor maneira de garantir que sua aplicação não encontre esses problemas é usar uma das bibliotecas ou filtros existentes em vez de escrever uma consulta de busca completamente personalizada:
- Jetpack Posts relacionados — filter hooks e exemplos.
- Jetpack Search — filter hooks
- Jetpack Search Search Query Builder (camada de abstração)
- Jetpack Search Query Builder (camada de abstração)
- es-wp-query (converte consultas MySQL do WP_Query em consultas Elasticsearch). Totalmente suportado em VIP Indices, pode funcionar parcialmente no Jetpack Pro, mas não foi testado.
- es-admin (alimenta a busca de posts no wp-admin com ES). Totalmente suportado em VIP indices, situação desconhecida no Jetpack Pro.
Como código é a melhor documentação, a forma como os mapeamentos e documentos são construídos para nossos índices está disponível em grande parte no WPES-Lib. O Data.blog tem a melhor descrição de como funciona nossa indexação em tempo real.
Documentos
Indexamos todos os posts, páginas e tipos de post personalizados do WordPress desde que o status do post seja publish, trash, pending, draft, future ou private. Posts que estão disponíveis publicamente podem ser consultados pela nossa API sem autenticação. Requisições autenticadas retornarão todos os posts. No caso do Jetpack, quaisquer posts que estejam bloqueados para sincronização não estarão disponíveis em nosso índice.
Consulte o esquema de documento de post para detalhes sobre todos os campos no índice.
API de Busca
Existem limitações ligeiramente diferentes nas APIs dependendo do nível de serviço que você possui (WordPress VIP, Jetpack Pro ou Jetpack Posts relacionados). Dependendo do nível de serviço, diferentes recursos do Elasticsearch Query DSL estão disponíveis.
Consulte a API de consultas para detalhes e limitações das consultas, filtros e agregações disponíveis.
* Elasticsearch é uma marca registrada da Elasticsearch BV, registrada nos EUA e em outros países.
Última atualização: junho 19, 2026