Elasticseach多个索引建议

时间:2018-09-20 14:39:19

标签: elasticsearch search

我有以下问题。这实际上是我对“您的意思是”查询的实现。如果仅使用一个索引,则结果非常合适。如果我使用multiple indices,将不会得到任何结果。

此查询仅适用于单个索引吗?

GET index1/_search
{
  "suggest": {
    "text": "exmple",
    "multi_phrase": {
      "phrase": {
        "field": "all",
        "size": 5,
        "gram_size": 3,
        "collate": {
          "query": {
            "source": {
              "bool": {
                "must": [
                  {
                    "match_all": {}
                  }
                ],
                "filter": {
                  "multi_match": {
                    "query": "{{suggestion}}",
                    "type": "cross_fields",
                    "fields": [
                      "name",
                      "name2"
                    ],
                    "operator": "AND",
                    "lenient": true
                  }
                }
              }
            }
          },
          "params": {
            "field_name": "all"
          }
        }
      }
    }
  }
}

如果我针对单个索引尝试此查询,则一切正常。如果我使用多个索引,则结果为空。

{
  "took": 2,
  "timed_out": false,
  "_shards": {
    "total": 2,
    "successful": 2,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": 0,
    "max_score": 0,
    "hits": []
  },
  "suggest": {
    "multi_phrase": [
      {
        "text": "example",
        "offset": 0,
        "length": 9,
        "options": []
      }
    ]
  }
}

1 个答案:

答案 0 :(得分:0)

我自己找到了解决方案。我必须使用confidence parameter

  

置信度定义了应用于输入短语的因子   分数,用作其他建议候选人的门槛。只要   分数高于阈值的候选人将包括在   结果。例如,置信水平为1.0只会返回   得分高于输入词组的建议。如果设置为0.0   返回前N名候选人。默认值为1.0。