0

ElasticSearch に次のマッピングがあります。

{
  "xenforo" : {
    "post" : {
      "_source" : {
        "enabled" : false
      },
      "properties" : {
        "date" : {
          "type" : "long",
          "store" : "yes"
        },
        "discussion_id" : {
          "type" : "long",
          "store" : "yes"
        },
        "message" : {
          "type" : "string"
        },
        "node" : {
          "type" : "long"
        },
        "thread" : {
          "type" : "long"
        },
        "title" : {
          "type" : "string"
        },
        "user" : {
          "type" : "long",
          "store" : "yes"
        }
      }
    },

メッセージ フィールドで単語 test を検索したいのですが、それをノード ID 5 に制限します。この DSL 検索をどのように変更しますか?

$data_string = '{
"from" : 0, "size" : 100,
"sort" : [
    { "date" : {"order" : "desc"} }
],
"query": {
        "match" : {
            "message" : {
                "query" : "test"
            }
        }
    }
}';

どうぞよろしくお願いいたします。

4

1 に答える 1

1

フィルタリングされたクエリを使用できます。

{
  "from": 0,
  "size": 100,
  "sort": [{
    "date": {
      "order": "desc"
    }
  }],
  "query": {
    "filtered": {
      "query": {
        "match": {
          "message": {
            "query": "test"
          }
        }
      },
      "filter": {
        "term": {
          "node": 5
        }
      }
    }
  }
}
于 2013-04-14T00:41:41.553 に答える