0

範囲、テキスト、並べ替えを含むこのクエリがあります。並べ替えで範囲を使用するか、並べ替えでテキストを使用すると機能しますが、3 つすべてを一緒に使用しようとするとエラーがスローされます。

「解析失敗: ソースの解析に失敗しました」

エラーがあまり明確ではないため、なぜ機能しないのかわかりません。jsonlint.com を使用して JSON を確認しましたが、有効です。テキストと範囲クエリを組み合わせて使用​​できませんか?

{
   "query" : {       
       "text" : {
          "Content" : "fight"
       },
       "range" : {
         "UpdateTime" : {
            "from" : "20120601T000000",
            "to" : "20120630T235959"
         }
       }        
    },
    "sort" : [{ "UpdateTime" : {"order" : "desc"} }]
}
4

2 に答える 2

4

query 要素には、単一のクエリのみを含めることができます。範囲とテキストの両方で検索を制限したい場合は、これら 2 つのクエリを 1 つのクエリに結合するか、1 つをクエリとして使用し、もう 1 つをフィ​​ルタとして使用する必要があります。

ブールクエリを使用してこれら 2 つのクエリを組み合わせると、次のようになります。

{
    "query" : {       
        "bool" : {
            "must" : [
                {
                    "text" : {
                        "Content" : "fight"
                    }                    
                },
                {
                    "range" : {
                        "UpdateTime" : {
                            "from" : "20120601T000000",
                            "to" : "20120630T235959"
                        }
                    }
                }
            ]
        }
    },
    "sort" : [{ "UpdateTime" : {"order" : "desc"} }]
}'

フィルターを使用すると、次のようになります。

{
    "query" : {       
        "text" : {
            "Content" : "fight"
        }                    
    },
    "filter" : {
        "range" : {
            "UpdateTime" : {
                "from" : "20120601T000000",
                "to" : "20120630T235959"
            }
        }
    },
    "sort" : [{ "UpdateTime" : {"order" : "desc"} }]
}

フィルターを使用すると、ファセットの計算方法に影響します。詳細については、elasticsearch ドキュメントのフィルターページを参照してください。

于 2012-07-18T14:07:02.523 に答える
0

このようなブールクエリを使用すると、うまくいきました。

{
    "query": {
        "bool": {
            "must": {     
                "range": {
                    "UpdateTime": {
                        "from": "20120601T000000",
                        "to": "20120630T235959"
                    }
                }                
            },
            "must_not": { 
               "text": {
                    "Content": "fight"
                }
           }
        }
    }
}
于 2012-07-18T14:06:53.833 に答える