En Elasticsearch, ¿cómo realzo los términos seleccionados mientras sigo usando un comodín?

No puedo descifrar a partir de la documentación cómo hacer una búsqueda con comodines en varios términos, pero solo aumentar/despotenciar algunos.

Tengo una construcción JSON como:

{
  'indices_boost': {
    'football': 1.2,
    'horse-race': 1.1
  },
  'query': {
    'bool': {
      'minimum_number_should_match': 2,
      'should': [
        {
          'wildcard': {
            'name': {
              'boost': 1.2,
              'value': 'polan*'
            }
          }
        },
        {
          'wildcard': {
            'nicknames': u
            'polan*'
          }
        },
        {
          'wildcard': {
            'horses': 'polan*'
          }
        },
        {
          'wildcard': {
            'jockeys': 'polan*'
          }
        },
        {
          'wildcard': {
            'parent': {
              'boost': 0.7,
              'value': 'polan*'
            }
          }
        },
        {
          'terms': {
            'minimum_match': 1,
            'state': [
              'upcoming',
              'live'
            ]
          }
        }
      ]
    }
  },
  'size': 5
}

La intención es que una coincidencia de comodines en el name campo debe ser potenciado, mientras que una coincidencia comodín en el parent el campo sigue siendo relevante, pero no debe colocarse encima de los resultados donde name está emparejado.

Esta consulta en particular no devuelve resultados aunque debería (una consulta para _all con comodín devuelve resultados).

preguntado el 03 de mayo de 12 a las 15:05

1 Respuestas

Puede usar 'boost':0.0 para eliminar el impacto del término coincidente en el puntaje.

Si tiene especificados analizadores no predeterminados para sus campos, estos campos pueden contener términos diferentes del campo _all, lo que podría explicar por qué los comodines funcionan para _all pero fallan para campos individuales.

contestado el 03 de mayo de 12 a las 15:05

No usar ningún analizador. Tampoco estoy seguro de lo que haría con el "boost":0.0 - Quiero que las cosas puntúen, pero si solo coincide con el padre, quiero que tenga una clasificación más baja. - Brad Wright

Su consulta debería funcionar entonces. ¿Puedes publicar una reproducción del problema? - Imotov

En realidad, estaba siendo un idiota y estaba consultando un campo antiguo: el esquema había cambiado desde entonces. Aceptaré su respuesta ya que el consejo de impulso es útil. - Brad Wright

impulso de 0 todavía hace una diferencia para mí en el puntaje de partido vs no partido - radtek

@BradWright exactamente dónde pusiste boost=0.0 en la consulta presentada anteriormente? ¡Gracias! - Loretoparisi

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.