2

エラスティック検索のファセットの QueryDSL を理解できないようです。以下は、クエリ オブジェクトとtags配列のマッピングです。これらをタグに基づいてファセットナビゲーションに入れようとしています。各「要素」には、タグ配列に関連付けられた複数のタグがあります [すべての要素にタグがあるわけではありません。空の配列を持つものもあります。各タグは、id プロパティとタグ プロパティを持つオブジェクトです。

ネストされたファセット アプローチを試してみたところ、「タグがネストされていません」というエラーが表示されたので、以下で試してみました。エラーは表示されませんが、返される JSON に facets オブジェクトがありません。私はこのページをヘルプとして使用しています: http://www.elasticsearch.org/guide/reference/api/search/facets/index.html .

これを正しくフォーマットし、これらの構成を理解するのを手伝ってくれる人はいますか? どんな助けにも感謝します!

// this is my query object
{
  "sort":{ "created_at":{ "order":"desc" } },
  "query":{
    "constant_score":{
      "filter":{
        "and":[
          { "missing":{ "field":"parent_id" } },
          { "missing":{ "field":"wall_id" } },
          { "term":{ "active":true } }
        ]  
      }
    }
  },
  "facets":{
    "tags":{ "terms":{ "field":"tags.tag" } }
  }
}


// this is the mapping for the tags array
"tags":{
  "type":"nested",
  "include_in_parent":true,
  "properties":{
    "id":{ "type":"integer" },
    "tag":{ "type":"string" }
  }
},
4

1 に答える 1

7

これを (0.18.5 を使用して) 複製しようとしましたが、うまくいきませんでした。以下にいくつかの詳細を示します。最初の例は、あなたが説明したことを複製しようとします。2 つ目は、タグを include_in_parent としてマップせず、ファセット リクエストで「ネストされた」フィールドを使用します。ご覧のとおり、どちらの場合もファセットが返されます。

これにより、残りのマッピングに何か問題があるか、問題を引き起こしているドキュメント (提供されたサンプルではありません) があると思われます。

ネストされたアプローチを試したとき、おそらく "nested":"tags" の代わりに "nested":"tags.tag" を使用しましたか?

(Un)成功した試行 #1:

マッピングを使用してインデックスを作成します。

$ curl -XPOST 'http://localhost:9200/testindex/' -d '{
"mappings": {
    "element": {
        "properties": {
            "tags": {
                "type": "nested",
                "include_in_parent": true,
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "tag": {
                        "type": "string"
                    }
                }
            }
        }
    }
}

}'

索引文書:

    $ curl -XPOST 'http://localhost:9200/testindex/element' -d '{
    "element_id": 4682,
    "parent_id": null,
    "wall_id": null,
    "username": "John Doe",
    "avatar": "56f1bb0a96d02b90e5915ff38ea189ec.jpg",
    "title": "Easy Chart  is a great easy comparison chart maker for math and...",
    "description": "<p>Easy Chart  is a great easy comparison chart maker for math and science skills. It even allows you to pick the appropriate chart type.</p>",
    "groups": [
        {
            "id": 6,
            "name": "Fourth Grade (All Subjects)",
            "name_short": "4th Grade"
        },
        {
            "id": 17,
            "name": "Eighth Grade Science",
            "name_short": "8th Science"
        },
        {
            "id": 13,
            "name": "Seventh Grade Science",
            "name_short": "7th Science"
        },
        {
            "id": 9,
            "name": "Sixth Grade Science",
            "name_short": "6th Science"
        }
    ],
    "tags": [
        {
            "id": 33,
            "tag": "iPad"
        },
        {
            "id": 32,
            "tag": "iPod"
        }
    ],
    "webpages": [],
    "videos": [],
    "documents": [],
    "photos": [],
    "reports": [],
    "bookmarks": [],
    "likes": [],
    "dislikes": [],
    "element_type": "Post",
    "active": true,
    "deleted": false,
    "updated_at": "2011-11-27T21:37:38-0600",
    "created_at": 1322451458000,
    "created_at_formatted": "2 weeks ago"
}'

探す:

$ curl -XPOST 'http://localhost:9200/testindex/element/_search' -d '{
  "sort":{ "created_at":{ "order":"desc" } },
  "query":{
    "constant_score":{
      "filter":{
        "and":[
          { "missing":{ "field":"parent_id" } },
          { "missing":{ "field":"wall_id" } },
          { "term":{ "active":true } }
        ]  
      }
    }
  },
  "facets":{
    "tags":{ "terms":{ "field":"tags.tag" } }
  }
}'

結果:

{
    "took": 4,
    "timed_out": false,
    "_shards": {
        "total": 5,
        "successful": 5,
        "failed": 0
    },
    "hits": {
        "total": 1,
        "max_score": null,
        "hits": [
            {
                "_index": "testindex",
                "_type": "element",
                "_id": "RZK41LngTKOhMUS6DXRi7w",
                "_score": null,
                "_source": {
                    "element_id": 4682,
                    "parent_id": null,
                    "wall_id": null,
                    "username": "John Doe",
                    "avatar": "56f1bb0a96d02b90e5915ff38ea189ec.jpg",
                    "title": "Easy Chart  is a great easy comparison chart maker for math and...",
                    "description": "<p>Easy Chart  is a great easy comparison chart maker for math and science skills. It even allows you to pick the appropriate chart type.</p>",
                    "groups": [
                        {
                            "id": 6,
                            "name": "Fourth Grade (All Subjects)",
                            "name_short": "4th Grade"
                        },
                        {
                            "id": 17,
                            "name": "Eighth Grade Science",
                            "name_short": "8th Science"
                        },
                        {
                            "id": 13,
                            "name": "Seventh Grade Science",
                            "name_short": "7th Science"
                        },
                        {
                            "id": 9,
                            "name": "Sixth Grade Science",
                            "name_short": "6th Science"
                        }
                    ],
                    "tags": [
                        {
                            "id": 33,
                            "tag": "iPad"
                        },
                        {
                            "id": 32,
                            "tag": "iPod"
                        }
                    ],
                    "webpages": [],
                    "videos": [],
                    "documents": [],
                    "photos": [],
                    "reports": [],
                    "bookmarks": [],
                    "likes": [],
                    "dislikes": [],
                    "element_type": "Post",
                    "active": true,
                    "deleted": false,
                    "updated_at": "2011-11-27T21:37:38-0600",
                    "created_at": 1322451458000,
                    "created_at_formatted": "2 weeks ago"
                },
                "sort": [
                    1322451458000
                ]
            }
        ]
    },
    "facets": {
        "tags": {
            "_type": "terms",
            "missing": 0,
            "total": 2,
            "other": 0,
            "terms": [
                {
                    "term": "ipod",
                    "count": 1
                },
                {
                    "term": "ipad",
                    "count": 1
                }
            ]
        }
    }
}

(Un)成功した試行 #2:

マッピングを使用してインデックスを作成します。

$ curl -XPOST 'http://localhost:9200/testindex2/' -d '{
"mappings": {
    "element": {
        "properties": {
            "tags": {
                "type": "nested",
                "include_in_parent": false,
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "tag": {
                        "type": "string"
                    }
                }
            }
        }
    }
}

}'

索引文書:

    $ curl -XPOST 'http://localhost:9200/testindex2/element' -d '{
    "element_id": 4682,
    "parent_id": null,
    "wall_id": null,
    "username": "John Doe",
    "avatar": "56f1bb0a96d02b90e5915ff38ea189ec.jpg",
    "title": "Easy Chart  is a great easy comparison chart maker for math and...",
    "description": "<p>Easy Chart  is a great easy comparison chart maker for math and science skills. It even allows you to pick the appropriate chart type.</p>",
    "groups": [
        {
            "id": 6,
            "name": "Fourth Grade (All Subjects)",
            "name_short": "4th Grade"
        },
        {
            "id": 17,
            "name": "Eighth Grade Science",
            "name_short": "8th Science"
        },
        {
            "id": 13,
            "name": "Seventh Grade Science",
            "name_short": "7th Science"
        },
        {
            "id": 9,
            "name": "Sixth Grade Science",
            "name_short": "6th Science"
        }
    ],
    "tags": [
        {
            "id": 33,
            "tag": "iPad"
        },
        {
            "id": 32,
            "tag": "iPod"
        }
    ],
    "webpages": [],
    "videos": [],
    "documents": [],
    "photos": [],
    "reports": [],
    "bookmarks": [],
    "likes": [],
    "dislikes": [],
    "element_type": "Post",
    "active": true,
    "deleted": false,
    "updated_at": "2011-11-27T21:37:38-0600",
    "created_at": 1322451458000,
    "created_at_formatted": "2 weeks ago"
}'

探す:

$ curl -XPOST 'http://localhost:9200/testindex2/element/_search' -d '{
  "sort":{ "created_at":{ "order":"desc" } },
  "query":{
    "constant_score":{
      "filter":{
        "and":[
          { "missing":{ "field":"parent_id" } },
          { "missing":{ "field":"wall_id" } },
          { "term":{ "active":true } }
        ]  
      }
    }
  },
  "facets":{
    "tags":{ "terms":{ "field":"tags.tag" }, "nested":"tags" }
  }
}'

結果:

{
    "took": 17,
    "timed_out": false,
    "_shards": {
        "total": 5,
        "successful": 5,
        "failed": 0
    },
    "hits": {
        "total": 1,
        "max_score": null,
        "hits": [
            {
                "_index": "testindex2",
                "_type": "element",
                "_id": "_F1TTGJETOipo8kVR7ZXkQ",
                "_score": null,
                "_source": {
                    "element_id": 4682,
                    "parent_id": null,
                    "wall_id": null,
                    "username": "John Doe",
                    "avatar": "56f1bb0a96d02b90e5915ff38ea189ec.jpg",
                    "title": "Easy Chart  is a great easy comparison chart maker for math and...",
                    "description": "<p>Easy Chart  is a great easy comparison chart maker for math and science skills. It even allows you to pick the appropriate chart type.</p>",
                    "groups": [
                        {
                            "id": 6,
                            "name": "Fourth Grade (All Subjects)",
                            "name_short": "4th Grade"
                        },
                        {
                            "id": 17,
                            "name": "Eighth Grade Science",
                            "name_short": "8th Science"
                        },
                        {
                            "id": 13,
                            "name": "Seventh Grade Science",
                            "name_short": "7th Science"
                        },
                        {
                            "id": 9,
                            "name": "Sixth Grade Science",
                            "name_short": "6th Science"
                        }
                    ],
                    "tags": [
                        {
                            "id": 33,
                            "tag": "iPad"
                        },
                        {
                            "id": 32,
                            "tag": "iPod"
                        }
                    ],
                    "webpages": [],
                    "videos": [],
                    "documents": [],
                    "photos": [],
                    "reports": [],
                    "bookmarks": [],
                    "likes": [],
                    "dislikes": [],
                    "element_type": "Post",
                    "active": true,
                    "deleted": false,
                    "updated_at": "2011-11-27T21:37:38-0600",
                    "created_at": 1322451458000,
                    "created_at_formatted": "2 weeks ago"
                },
                "sort": [
                    1322451458000
                ]
            }
        ]
    },
    "facets": {
        "tags": {
            "_type": "terms",
            "missing": 0,
            "total": 2,
            "other": 0,
            "terms": [
                {
                    "term": "ipod",
                    "count": 1
                },
                {
                    "term": "ipad",
                    "count": 1
                }
            ]
        }
    }
}
于 2011-12-19T11:49:08.750 に答える