2017-08-03 19 views
0

私はelasticsearchを初めて使った人です。私はバージョン5.4.3を使用していますが、daterangeクエリ以外はすべて正常に動作します。それはすべてのエントリを返します。弾性検索の日付範囲の問題

{ 
     "from": 0, 
     "query": { 
        "bool": { 
        "must": [ 
         { 
         "term": { 
          "qualities.qualityId": { 
          "value": 110137 
          } 
         } 
         }, 
         { 
         "range": { 
          "qualities.value": { 
          "gte": "01/01/1950", 
          "lte": "12/12/1999", 
          "format": "dd/MM/yyyy" 
          } 
         } 
         } 
        ] 
        } 
       } 
     } 

Result

しかし、日付1950年1月1日よりも少ない1945年2月11日。 非常に奇妙に見えます。品質がためのオブジェクトのためにあなたが照会することはできませんので、私のプロジェクトでは、私は、

Mapping

+0

マッピングを表示してください。私はあなたのオブジェクトが入れ子になっていないと思います。 – MartinSchulze

+0

@martinschulze http:// ***/person_search_index/_mapping return "検証に失敗しました:1:マッピングタイプがありません。"理由は?そして私はそれをどのように修正できますか? – OldUnion

+0

http:// ***/person_search_index/person_search_type/_mapping – MartinSchulze

答えて

0

フィールド名と値の単純なリストにあなたの資質の配列を平らにしますelasticsearch問題をElasticsearch.NetのV5.4を使用しています自体。解決策は、品質オブジェクト(https://www.elastic.co/guide/en/elasticsearch/reference/current/nested.html)にネストされたデータ型を使用することです。その後、クエリは期待どおりに動作するはずです。

+0

データを失うことなくタイプを入れ子に変更できますか? – OldUnion

+0

インデックス作成時にマッピングを作成する必要があります。次に、データを新しい索引に再索引付けすることができます。私はあなたがelasticsearchの自動生成されたマッピング機能を使用していると仮定します。クイックスタートには最適ですが、時間の経過とともにマッピングを洗練しなければなりません。 – MartinSchulze

0

マッピングではvalueプロパティが原因でフィルタが正常に動作しません。ここでプロパティはtextと宣言されていますが、データ型はdateである必要があります。

以下のようにマッピングを変更してみてください。

"value" : { 
    "type": "date" 
} 
+0

と私は文字列型で他の "値"と何をしなければなりませんか? – OldUnion

+0

'' value_text ":{" type ":" text "、" value_date ":{" type ":" date "}'ではなく、値として2つのフィールドを持つことができます。 'Екатерина'の場合は' value_text'に入れ、 'value_date'は空のままにしてください。 '01/01/1950'の場合は' value_date'に入れ、 'value_text'は空のままにしてください。 [ネストされた](https://www.elastic.co/guide/en/elasticsearch/reference/current/nested.html)フィールドについての別の返信にも注意してください。 –

関連する問題