Tipos de dados
palavra-chave e texto Qual é a diferença?
campo de palavra-chave para indexação de conteúdo estruturado, como endereços de email, nomes de host, o código de estado, código postal ou o rótulo.
Normalmente usado para filtrar (encontrar todos os meus posts, dos quais o estado é publicado), classificação e agregação. chave tipo de campo pode valorizar ser apenas com precisão a sua pesquisa. Tipo de dados de texto é usado para pesquisa de texto completo, a palavra será armazenado no dispositivo de armazenamento de dados por palavra, frase seria em várias palavras de pesquisa após pesquisa. NA tipo de texto para classificação e agregação.
data Tipo
ElasticSearch fornecendo tipo de data para a data de processamento, mas desde que não há nenhum tipo data JSON, ele é convertido dentro da data e hora UTC armazenado (com milissegundos).
Se a data é inserido na inserção de um formato de data convencional ( yyyy-MM-dd
ou yyyy-MM-dd'T'HH:mm:ss.SSSZ
), o formato de data ES reconhece automaticamente o conjunto de tipo de campo Date
. Se o tipo de campo no mapeamento foi determinada Date
, em seguida, inserir uma corda ou formatado carimbo de data (e corda Numeric
tipo tempo) Es será armazenado como um tipo de data, mas com o mesmo formato quando a exibição e de armazenamento de dados (o tempo de armazenamento selo timestamp é devolvido, a string retornada é a corda, mas é recomendado depósito padronizado tempo UTC, ou timestamp, evite tipo inconsistências).
questões de fuso horário
A: padrão ElasticSearch UTC tempo, isto é, a zona zero, sem especificar quando a zona de consulta, a consulta zona padrão para 0:00, e do Distrito Leste 8, onde nós somos pobres 8 horas. yyyy-MM-dd'T'HH:mm:ss.SSSZ
, Aqui Z
em nome de fuso horário UTC.
Es realizando consulta zona de data / tempo pode ser especificado, quando a polimerização:
//日期范围查询
POST datatypetest/_search
{
"query": {
"range": {
"date3": {
"gte": "2018-07-05", "lte": "now", "time_zone": "Asia/Shanghai"//这就是东八区(北京时间/中国标准时间) } } } }
//日期聚合
GET my_index/_search?size=0
{
"aggs": {
"by_day": {
"date_histogram": {
"field": "date", "interval": "day", "time_zone": "Asia/Shanghai" } } } }
//Java获取系统时区id
TimeZone.getDefault().getID()
//Es Java Api日期范围查询
QueryBuilders
.rangeQuery("your date field")
.gte("your date from")
.lte("your date to")
.timeZone(TimeZone.getDefault().getID());//此处只能设置时区id
//Es Java Api日期聚合查询
AggregationBuilders
.dateHistogram("your alias")
.timeZone(DateTimeZone.getDefault());//获取系统默认时区,此处timeZone对象是joda包中的DateTimeZone
Ao usar Kibana, Kibana ficando navegador padrão, distrito de fazer quando formatado de acordo com a data em que a exibição de dados. Mas o padrão é retornado usando o UTC DevTools tempo DSL ou solicitação de gravação diretamente Es, vai encontrar menos tempo para oito horas.
Recomendado para não modificar o uso da data em que a área de formato de data tipo, todos os dados no fuso horário UTC, desta vez não é fácil ir uniforme errado.
A diferença entre objeto e tipos aninhados, cada cenário é o que
es é o tipo de objeto padrão do objeto, o objeto é armazenado nos aninhados JSON es será definido para o objeto tipo padrão. es dentro aninhada irá converter objetos JSON plana armazenado.
Por exemplo, um json comum
{
"region": "US",
"manager": {
"age": 30, "name": { "first": "John", "last": "Smith" } } }
Es é convertido achatada dados com base internamente json
{
"region": "US",
"manager.age": 30,
"manager.name.first": "John", "manager.name.last": "Smith" }
um conjunto aninhado de objetos JSON, que permite que objectos na matriz pode ser interrogado de forma independente um do outro índice maneira. Uma vez que não existe o conceito de objeto Lucene interna, por isso es precisa para converter dados para uma configuração plana simples.
Uma disposição aninhada de objectos:
{
"group" : "fans",
"user" : [
{
"first" : "John", "last" : "Smith" }, { "first" : "Alice", "last" : "White" } ] }
Es dentro irá ser convertido:
{
"group" : "fans",
"user.first" : [ "alice", "john" ], "user.last" : [ "smith", "white" ] }
user.first e campos user.last são convertidos em campos multi-valor, a correlação entre os dados serão perdidos, o que resulta em resultados incorrectos.
Desta vez com tipos aninhados pode resolver este problema.
inquérito
prazo e jogo para corresponder ao que é a diferença?
prazo é uma correspondência exata, sem palavras-chave de consulta de texto. A partida para a pesquisa de texto completo, as palavras-chave de busca irá primeira palavra, seguido de pesquisa de texto completo.
obrigação, filtro, post_filter Qual é a diferença?
deve consultar contexto (contexto de consulta), calcula marcar consulta (relevância documento). filtro para filtro de contexto, o cálculo de pontuação não consulta. Post_filter o resultado de pós-filtração, a polimerização também vai ser filtrado. ordem de execução: Filtro -> agregações - post_filter.
contexto de consulta e contexto de filtro a diferença?
must / deve consultar contexto. parâmetros de filtro bool ou consulta must_not / filtro constant_score a consulta / aggretion filtro de contexto filtragem para os cenários.
contexto de consulta calcula o valor de retorno do documento, e contexto de filtro não calcular a pontuação, mas a semântica deste partidas documento sem o cálculo da correlação. No contexto da filtração, es do filtro será automaticamente cache para melhorar a consulta de desempenho.