如何在Elasticsearch中支持最简单,最精确的字段匹配

时间:2017-06-01 20:42:23

标签: elasticsearch mongoosastic

假设我的查询是字符串" X Y",其中X和Y是单词,我的数据库包含字符串:

GET _search
{
  "query" : {
    "bool" : {
      "must": [
        {
          "query_string": {
            "query": "Foo bar"
          }
        }
        ],
        "filter": [],
        "should": [
          {
            "match": {
              "name": {
                "query":"Foo bar",
                "boost": 2
              }
            }
          },
          {
            "match_phrase": {
                "name": {
                  "query": "Foo bar",
                  "boost": 5
                }
            }
          }
        ]
    }
  }
}

我如何确保" X Y"总是以最高分返回?我想回来" X Y"因为它完全匹配(没有多余的单词)。

查看文档后,我尝试使用match_phrase关键字,但我相信这只能帮助匹配查询中的单词。所以match_phrase确保" X Y A"返回但是" X A Y" ISN'吨。它没有解决返回最精确匹配的问题。

当前的实施(不起作用),在这里我试图返回名称为" Foo bar"作为最佳结果:

@XmlRootElement
public class IngresarOrden extends DatosOferta {

    private String accion;

    private ModoEjecucion ejecucion;

    private String operador;

    @XmlAttribute
    public String getAccion() {
        return accion;
    }
    public void setAccion(String accion) {
        this.accion = accion;
    }
    @XmlAttribute
    public ModoEjecucion getEjecucion() {
        return ejecucion;
    }
    public void setEjecucion(ModoEjecucion ejecucion) {
        this.ejecucion = ejecucion;
    }
    @XmlAttribute
    public String getOperador() {
        return operador;
    }
    public void setOperador(String operador) {
        this.operador = operador;
    }

1 个答案:

答案 0 :(得分:0)

我意识到你可以使用" term"来实现所期望的行为。关键字。