ElasticSearch搜索所有领域和提高精确匹配

bkhjykvo  于 2021-06-14  发布在  ElasticSearch
关注(0)|答案(1)|浏览(244)

我对ElasticSearch非常陌生,如何编写一个查询,在文档中的所有字段中搜索关键字(即test关键字),并为
与所有字段中的关键字短语完全匹配。
某些字段的出现次数(我增加了a的5次,b的3次,c的1次)
我看到了一些关于match\u短语的文档,但它似乎不支持多个字段。

{
    "query": {
        "multi_match": {
            "query": "test keyword",
            "fields": ["A^5", "B^3", "C^1"]
        }
    }
}
0mkxixxg

0mkxixxg1#

如果您希望所有字段中的关键字短语与boost完全匹配,请尝试下面的搜索查询,其中多匹配查询与type一起使用 phrase 参数:
添加索引数据、搜索查询和搜索结果的工作示例
索引数据:

{
  "A":"test keyword",
  "B":"a",
  "C":"c"
}
{
  "A":"a",
  "B":"test keyword",
  "C":"c"
}
{
  "A":"a",
  "B":"b",
  "C":"test keyword"
}

搜索查询:

{
  "query": {
    "bool": {
      "should": [
        {
          "multi_match": {
            "query": "test keyword",
            "fields": [
              "A^5",
              "B^3",
              "C^1"
            ],
            "type":"phrase"    <-- note this
          }
        }
      ]
    }
  }
}

搜索结果:

"hits": [
      {
        "_index": "stof_64266554",
        "_type": "_doc",
        "_id": "1",
        "_score": 16.285465,
        "_source": {
          "A": "test keyword",
          "B": "a",
          "C": "c"
        }
      },
      {
        "_index": "stof_64266554",
        "_type": "_doc",
        "_id": "2",
        "_score": 8.142733,
        "_source": {
          "A": "a",
          "B": "test keyword",
          "C": "c"
        }
      },
      {
        "_index": "stof_64266554",
        "_type": "_doc",
        "_id": "3",
        "_score": 1.6285465,
        "_source": {
          "A": "a",
          "B": "b",
          "C": "test keyword"
        }
      }
    ]

相关问题