1

Elasticsearch Term Facet に問題がありました

私は次のようにデータを置きます:

curl -X DELETE "http://localhost:9200/articles'

curl -X POST "http://localhost:9200/articles/article" -d '{"title" : "One",   "tags" : "foo","datetime":"2005-12-23 23:10:52"}'


curl -X POST "http://localhost:9200/articles/article" -d '{"title" : "Two",   "tags" : "bar","datetime":"2005-12-23 23:10:53"}'

curl -X POST "http://localhost:9200/articles/article" -d '{"title" : "Three", "tags" : "baz","datetime":"2005-12-23 23:10:54"}'

curl -X POST "http://localhost:9200/articles/article" -d '{"title" : "four", "tags" : "baz","datetime":"2005-12-23 23:10:55"}'

curl -X POST "http://localhost:9200/articles/article" -d '{"title" : "five", "tags" : "foo","datetime":"2005-12-23 23:10:56"}'

したがって、用語ファセットを照会するたびに、Elasticsearch クエリに続いて正しい結果が得られます。

curl  'http://localhost:9200/articles/article/_search?pretty=true' -d '{

   "query": {
       "match_all": {}
   },
    "facets" : { "myfacet" : { "terms" : {"field" : "tags"}}
    }
}'

しかし、フィルターをファセットに追加すると、クエリに続くファセット数は表示されません:

curl  'http://localhost:9200/articles/article/_search?pretty=true' -d '{

   "query": {
       "match_all": {}
   },
   "facets" : {
        "myfacet" : { "terms" : {"field" : "tags"},
             "filter" : { "range" :{
 "datetime" : {"from" : "2005-12-23   3:10:52","to" : "2005-12-23 23:10:56" }

        }
            }
    }
    }
}'

次のように結果が得られます

facets" : {
    "myfacet" : {
      "_type" : "filter",
      "count" : 0
    }
  }

そのため、なぜそのような数を与えているのかは誰でも知っています。

4

1 に答える 1

1

日付の形式が無効です。elasticsearch がサポートするサポートされている日時形式を確認してください (長すぎる、読み取らないでください。jodatime でサポートされている日付はすべてelasticsearch でサポートされています)。

http://www.elasticsearch.org/guide/reference/mapping/date-format.html

そうは言っても、挿入ステートメントで日付を変更し、2005-12-23T23:10:55Z. 次に、クエリをその時間形式の適切な時間範囲に変更するだけで、結果が得られます。

また、from 句で使用した日付が有効ではないことに気付いたので、これらのクエリを作成するときも注意してください。

変更された curl スクリプトは次のとおりです。

curl -X POST "http://localhost:9200/articles/article" -d '{"title" : "One",   "tags" : "foo","datetime":"2005-12-23T23:10:52Z"}'

curl -X POST "http://localhost:9200/articles/article" -d '{"title" : "Two",   "tags" : "bar","datetime":"2005-12-23T23:10:53Z"}'

curl -X POST "http://localhost:9200/articles/article" -d '{"title" : "Three", "tags" : "baz","datetime":"2005-12-23T23:10:54Z"}'

curl -X POST "http://localhost:9200/articles/article" -d '{"title" : "four", "tags" : "baz","datetime":"2005-12-23T23:10:55Z"}'

curl -X POST "http://localhost:9200/articles/article" -d '{"title" : "five", "tags" : "foo","datetime":"2005-12-23T23:10:56Z"}'

および変更された検索:

 curl  'http://localhost:9200/articles/article/_search?pretty=true' -d '{

   "query": {
      "match_all": {}
    },
    "facets" : {
     "myfacet" : { 
         "terms" : {"field" : "tags"},
         "filter" : { "range" :{
                         "datetime" : {
                             "from" : "2005-12-23T23:10:52Z",
                              "to" : "2005-12-23T23:10:54Z" 
                          }   
                       }
                    }
                  }
             }
}'

これが役に立てば幸いです、マット

于 2013-01-24T06:08:08.967 に答える