Elasticsearch仅与multi_match字段上的特定字段完全匹配

时间:2016-10-20 11:49:40

标签: ruby-on-rails elasticsearch search

我试图只搜索以下字段:

  1. 名称(产品名称)
  2. vendor.username
  3. vendor.name
  4. categories_name
  5. 但结果是广泛的,我希望结果正是用户输入的内容。

    示例:

    我输入Cloth A我希望结果完全 Cloth A而不是其他包含ClothA

    的结果

    这是我的尝试:

    ```

    GET /products/_search
    {
      "query": {
        "filtered": {
          "query": {
            "multi_match": {
              "query": "cloth A", 
              "fields": [
                "name",
                "vendor.name",
                "vendor.username",
                "categories_name"
              ] 
            }
          },
          "filter": [
            {
              "term": {
              "is_available": true
              }
            },
            {
              "term": {
                "is_ready": true
              }
            },
            {
              "missing": {
                "field": "deleted_at"
              }
            }
          ]
        }
      }
    }
    

    ```

    我该怎么做?提前致谢

2 个答案:

答案 0 :(得分:0)

将其放入multi_match

"multi_match": {
  "type": "best_fields"
 }

答案 1 :(得分:0)

这个有效:

"multi_match": {
  "type": "phrase"
 }