término de consulta y resumen del partido (recuperación de China)

ES consulta solicitud de dos maneras, una es la versión simple de la investigación, la otra es usando el cuerpo JSON solicitud completa, llamada de consulta estructurado (DSL).
Porque las consultas DSL más intuitivo y más fácil, así que la mayoría utilizar de esta manera.
consulta DSL POST es un pasado JSON, porque la solicitud es el formato JSON posterior, por lo que hay una gran cantidad de flexibilidad, hay muchas formas.
Hay un lugar que señalar que la estructura de la documentación dentro oficial al ejemplo JSON sólo una parte, no se puede copiar y pegar directamente en su uso. Para agregar una consulta general a instituciones clave.

partido

El ejemplo más simple de un partido:

Consultas y "Mi BMW ¿Cuánta potencia" Esta consulta coincide con los documentos.

{
  "query": {
    "match": {
        "content" : {
            "query" : "我的宝马多少马力"
        }
    }
  }
}

La consulta anterior será coincidente palabra, tales como "¿Cuánta potencia BMW" será la palabra es "la cantidad de caballos de fuerza de BMW," toda la información pertinente "la cantidad de caballos de fuerza BMW", entonces todas estas tres palabras contienen uno o más de los documentos se ser buscado a cabo.
Lucene y obtuvo según el sistema de puntuación (TF / IDF).

match_phrase

Por ejemplo, el ejemplo anterior es un documento "Mi buena potencia Porsche" se buscará a cabo, a continuación, desea una coincidencia exacta de todos los documentos que contienen "la cantidad de caballos de fuerza BMW" de cómo hacerlo? Debe utilizar el match_phrase

{
  "query": {
    "match_phrase": {
        "content" : {
            "query" : "我的宝马多少马力"
        }
    }
  }
}

La concordancia exacta puede ser más grave, que va a querer tener un factor ajustable, también cumplen con algunos partidos, sería necesario utilizar decantación.

{
  "query": {
    "match_phrase": {
        "content" : {
            "query" : "我的宝马多少马力",
            "slop" : 1
        }
    }
  }
}

multi_match

Si queremos hacer coincidir dos campos, un campo en el que este documento ha satisfecho el caso, el uso multi_match

{
  "query": {
    "multi_match": {
        "query" : "我的宝马多少马力",
        "fields" : ["title", "content"]
    }
  }
}

Pero multi_match en temas relacionados con el resultado del partido.

Queremos a juego completo de los documentos contables para la puntuación relativamente alta, es necesario el uso de best_fields

{
  "query": {
    "multi_match": {
      "query": "我的宝马发动机多少",
      "type": "best_fields",
      "fields": [
        "tag",
        "content"
      ],
      "tie_breaker": 0.3
    }
  }
}

Lo que significa que se encontró "motor de BMW," el documento marcará más adelante, aunque sólo sea para que coincida con la puntuación de BMW se multiplica por 0,3 coeficiente de documentos

Cuanto mayor sea el más queremos campo del documento coincide con la puntuación, a continuación, utilizar most_fields

{
  "query": {
    "multi_match": {
      "query": "我的宝马发动机多少",
      "type": "most_fields",
      "fields": [
        "tag",
        "content"
      ]
    }
  }
}

Esperamos que este vocabulario entradas de palabras son asignados a diferentes campos, a continuación, utilizar cross_fields

{
  "query": {
    "multi_match": {
      "query": "我的宝马发动机多少",
      "type": "cross_fields",
      "fields": [
        "tag",
        "content"
      ]
    }
  }
}

término

término representa la coincidencia exacta, es decir, se analiza ninguna palabra, el documento debe contener la totalidad de los términos de búsqueda

{
  "query": {
    "term": {
      "content": "汽车保养"
    }
  }
}

se encuentran todos los documentos que contienen la palabra "mantenimiento del coche" de la frase.

El uso del término a determinar es si el campo "analizó" (analizada), están siendo analizadas las cadenas predeterminadas.

Tomemos el ejemplo de la línea oficial, por ejemplo:

el mapeo:

PUT my_index
{
  "mappings": {
    "my_type": {
      "properties": {
        "full_text": {
          "type":  "string"
        },
        "exact_value": {
          "type":  "string",
          "index": "not_analyzed"
        }
      }
    }
  }
}

PUT my_index/my_type/1
{
  "full_text":   "Quick Foxes!",
  "exact_value": "Quick Foxes!"  
}

¿Qué full_text se analiza, se almacena en el índice es full_text [rápida, zorros], que se almacena en extra_value [Rápido zorros!].

Que después de varias peticiones:

GET my_index/my_type/_search
{
  "query": {
    "term": {
      "exact_value": "Quick Foxes!"
    }
  }
}

Los datos solicitados, debido a la coincidencia exacta

GET my_index/my_type/_search
{
  "query": {
    "term": {
      "full_text": "Quick Foxes!"
    }
  }
}

No se requiere ninguna información, porque el resultado no es la palabra full_text [zorros rápida!] La palabra.

bool investigación conjunta: debe, si, must_not

Si queremos petición "contento con el BMW, pero BMW sin etiqueta" tales necesidades similares, es necesario utilizar bool investigación conjunta.
investigación conjunta se utilizará al mosto, debería, must_not tres tipos de palabras clave.

Estos tres se puede entender

  • debe: La documentación debe adaptarse a las condiciones
  • debe: si el siguiente tomará más de una condición, al menos una condición, que está en línea con el documento debería
  • must_not: documento no debe coincidir con las condiciones

Por ejemplo, el anteriormente requisitos:

{
  "query": {
    "bool": {
      "must": {
        "term": {
          "content": "宝马"
        }
      },
      "must_not": {
        "term": {
          "tags": "宝马"
        }
      }
    }
  }
}

 

 

 

Publicados 298 artículos originales · ganado elogios 107 · Vistas de 140.000 +

Supongo que te gusta

Origin blog.csdn.net/ywl470812087/article/details/105004687
Recomendado
Clasificación