2

これは私のマッピングを表しています:

{
    "name": {"type": "string", "include_in_all": true},
    "properties": {
    "type": "nested",
    "properties": {
        "name": {"type": "string"},
        "value": {"type": "string"}
    }
}

「properties.value」の値に対してファセット検索を使用するにはどうすればよいですか? 次にドキュメントの例を示します。

{
    "name": "Testproduct",
    "properties": [{
        "name": "Color",
        "value": "Green"
    }, {
        "name": "Size",
        "value": "M"
    }]
}

「Color」プロパティでファセット リスト (のみ) を作成したい。したがって、結果は次のようになります。

Red: 7 times
Green: 5 times
Blue: 1 times

これは私がこれまでに試したことです:

{
    "size": 1000,
    "query": {
        "query_string": {
            "query": " ... ",
            "default_operator": "AND"
        }
    },
    "facets": {
        "resolution": {
            "nested": "properties",
            "facet_filter": {
                "term": {
                    "name": "Color"
                }
            },
            "terms_stats": {
                "key_field": "name",
                "value_field": "value"
            }
        }
    }
}

この検索クエリを実行すると、次の応答が返されます。

FacetPhaseExecutionException[Facet [resolution]: value_field [value] isn't a number field, but a string];

応答はほとんどわかりませんが、コンセプトによって何が間違っていたのかわかりません。

4

1 に答える 1

1

を使用しているからですterms_statsterm_stats数字用です。を使用する必要がありますterms。代わりに次のクエリを試してください。

{
  "size": 1000,
  "query": {
    "query_string": {
      "query": " ... ",
      "default_operator": "AND"
    }
  },
  "facets": {
    "resolution": {
      "nested": "properties",
      "facet_filter": {
        "term": {
          "name": "Color"
        }
      },
      "terms": {
        "field": "properties.value"
      }
    }
  }
}
于 2014-03-29T08:28:58.050 に答える