json上的elasticsearch精确短语匹配

rjzwgtxy  于 2021-06-10  发布在  ElasticSearch
关注(0)|答案(2)|浏览(447)

我正在使用elasticsearch从json字段进行精确的短语匹配。我尝试了多种语法,如multi\u match、query\u string和simple\u query\u string,但它们并没有完全按照给定的短语返回结果。
查询我正在使用的字符串语法;

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

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

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

现在的问题是;
是否可以使用elasticsearch对json执行精确匹配操作?

kupeojn6

kupeojn61#

可以尝试对类型短语使用多匹配查询

{
  "query": {
    "multi_match": {
      "query": "legal advisor",
      "fields": [
        "json.*"
      ],
      "type": "phrase"
    }
  }
}
sqserrrh

sqserrrh2#

由于您没有提供示例文档和预期文档,我假设您正在寻找短语匹配,添加一个工作示例。
索引示例文档,该示例文档还将生成索引Map

{
    "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"
                }
            }
        ]

相关问题