Algumas perguntas comuns ElasticSearch o (Update)

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-ddou 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 Numerictipo 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 Zem 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.

Acho que você gosta

Origin www.cnblogs.com/snake23/p/12481899.html
Recomendado
Clasificación