61

プロパティ Name と Surname を持つ User オブジェクトがあります。1 つのクエリを使用してこれらのフィールドを検索したいのですがmulti_match、ドキュメントで見つけましたが、それをワイルドカードで適切に使用する方法がわかりません。出来ますか?

クエリを試しましたmulti_matchが、うまくいきませんでした:

{
    "query": {
        "multi_match": {
            "query": "*mar*",
            "fields": [
                "user.name",
                "user.surname"
            ]
        }
    }
}
4

6 に答える 6

20

そのようなクエリは私のために働いた:

{
  "query": {
    "filtered": {
      "query": {
        "match_all": {}
      },
      "filter": {
        "bool": {
          "should": [
            {"query": {"wildcard": {"user.name": {"value": "*mar*"}}}},
            {"query": {"wildcard": {"user.surname": {"value": "*mar*"}}}}
          ]
        }
      }
    }
  }
}

私の場合、フィールドごとに異なるマスクが存在する可能性があることを除いて、あなたがしていることと同様です。

于 2015-05-26T17:05:28.893 に答える
12

私は今これをやった:

GET _search {
    "query": {
        "bool": {
            "must": [
                {
                    "range": {
                        "theDate": {
                            "gte": "2014-01-01",
                            "lte": "2014-12-31"
                        }
                    }
                },
                {
                    "match" : {
                        "Country": "USA"
                    }
                }
            ],
            "should": [
                {
                    "wildcard" : { "Id_A" : "0*" }
                },
                {
                    "wildcard" : { "Id_B" : "0*" }
                }
            ],"minimum_number_should_match": 1
        }
    }
}
于 2015-05-14T20:52:58.490 に答える