1

我正在使用弹性搜索从 json 字段中进行精确的短语匹配。我已经尝试过multi_matchquery_stringsimple_query_string等多种语法,但它们并没有完全按照给定的短语返回结果。

我正在使用的query_string语法;

    "query":{
        "query_string":{
            "fields":[
                "json.*"
            ],
            "query":"\"legal advisor\"",
            "default_operator":"OR"
        }
    }
}

我也尝试了过滤器而不是查询,但过滤器在 json 上没有给出任何结果。我用于过滤器的语法是;

  "query": {
    "bool": {
      "filter": {
        "match": {
          "json": "legal advisor"
        }
      }
    }
  }
}

现在的问题是;

是否可以使用elasticsearch对json执行精确匹配操作?

4

2 回答 2

0

您可以尝试使用类型为短语的多重匹配查询

{
  "query": {
    "multi_match": {
      "query": "legal advisor",
      "fields": [
        "json.*"
      ],
      "type": "phrase"
    }
  }
}
于 2020-11-25T09:15:40.100 回答
0

由于您没有提供示例文档和预期文档,我假设您正在寻找短语匹配,添加工作示例。

也将生成索引映射的索引示例文档

{
    "title" : "legal advisor"
}

{
    "title" : "legal expert advisor"
}

现在,如果您正在寻找legal advisor使用以下查询的确切短语搜索

{
    "query": {
        "match_phrase": {
            "title": "legal advisor"
        }
    }
}

仅返回第一个文档

"hits": [
            {
                "_index": "64989158",
                "_type": "_doc",
                "_id": "1",
                "_score": 0.5753642,
                "_source": {
                    "title": "legal advisor"
                }
            }
        ]
于 2020-11-25T09:30:31.200 回答