Elasticsearch -“无法读取当前时间戳”

mw3dktmi  于 7个月前  发布在  ElasticSearch
关注(0)|答案(2)|浏览(54)

我正在使用Amazon Opensearch搜索配置文件索引。我在应用程序日志中获得了以下使用multi_match的查询。

Amazon OpenSearch版本- Elasticsearch 6.4服务软件版本- Elasticsearch_6_4_R20230928-P1(最新)

有人能帮帮忙吗?

[2023-09-19T17:07:52,876][DEBUG][o.e.a.s.TransportSearchAction] [O1onMaP] [xxxxxx][0], node[a24qYwKTTUO6yFcWf8QRKg], [P], s[STARTED], a[id=50vjfxaPSuqAJSwQVbqtNA]: Failed to execute [SearchRequest{searchType=QUERY_THEN_FETCH, indices=[xxxxxx], indicesOptions=IndicesOptions[ignore_unavailable=false, allow_no_indices=true, expand_wildcards_open=true, expand_wildcards_closed=false, allow_aliases_to_multiple_indices=true, forbid_closed_indices=true, ignore_aliases=false], types=[profile], routing='null', preference='null', requestCache=false, scroll=null, maxConcurrentShardRequests=15, batchedReduceSize=512, preFilterShardSize=128, allowPartialSearchResults=true, source={"suggest":{"suggestedKeyword":{"text":"Frenny","phrase":{"field":"text_all","size":1,"real_word_error_likelihood":0.95,"confidence":1.0,"separator":" ","max_errors":0.5,"gram_size":2,"force_unigrams":true,"token_limit":10,"collate":{"query":{"source":{"bool":{"filter":[{"range":{"lastLogin":{"from":"now-6M","include_lower":true,"include_upper":true,"to":null}}},{"terms":{"motherTongueId":["3","1"]}},{"term":{"gender":"m"}}],"must":{"multi_match":{"fields":["name^12","aboutMe^4","occupation^4","text_all^1"]__PATH__ charset=UTF-8"}},"prune":false}}}}}}]
RemoteTransportException[[a24qYwK][__IP__][__PATH__[__PATH__]]]; nested: QueryShardException[failed to create query: {
  "bool" : {
    "must" : [
      {
        "multi_match" : {
          "query" : "french",
          "fields" : [
            "aboutMe^4.0",
            "name^12.0",
            "occupation^4.0",
            "text_all^1.0"
          ],
          "type" : "best_fields",
          "operator" : "AND",
          "slop" : 0,
          "prefix_length" : 0,
          "max_expansions" : 50,
          "tie_breaker" : 0.0,
          "zero_terms_query" : "NONE",
          "auto_generate_synonyms_phrase_query" : true,
          "fuzzy_transpositions" : true,
          "boost" : 1.0
        }
      }
    ],
    "filter" : [
      {
        "range" : {
          "lastLogin" : {
            "from" : "now-6M",
            "to" : null,
            "include_lower" : true,
            "include_upper" : true,
            "boost" : 1.0
          }
        }
      },
      {
        "terms" : {
          "motherTongueId" : [
            "3",
            "1"
          ],
          "boost" : 1.0
        }
      },
      {
        "term" : {
          "gender" : {
            "value" : "m",
            "boost" : 1.0
          }
        }
      }
    ],
    "adjust_pure_negative" : true,
    "boost" : 1.0
  }
}]; nested: ElasticsearchParseException[could not read the current timestamp]; nested: IllegalArgumentException[features that prevent cachability are disabled on this context];
Caused by: [__PATH__] QueryShardException[failed to create query: {
  "bool" : {
    "must" : [
      {
        "multi_match" : {
          "query" : "french",
          "fields" : [
            "aboutMe^4.0",
            "name^12.0",
            "occupation^4.0",
            "text_all^1.0"
          ],
          "type" : "best_fields",
          "operator" : "AND",
          "slop" : 0,
          "prefix_length" : 0,
          "max_expansions" : 50,
          "tie_breaker" : 0.0,
          "zero_terms_query" : "NONE",
          "auto_generate_synonyms_phrase_query" : true,
          "fuzzy_transpositions" : true,
          "boost" : 1.0
        }
      }
    ],
    "filter" : [
      {
        "range" : {
          "lastLogin" : {
            "from" : "now-6M",
            "to" : null,
            "include_lower" : true,
            "include_upper" : true,
            "boost" : 1.0
          }
        }
      },
      {
        "terms" : {
          "motherTongueId" : [
            "3",
            "1"
          ],
          "boost" : 1.0
        }
      },
      {
        "term" : {
          "gender" : {
            "value" : "m",
            "boost" : 1.0
          }
        }
      }
    ],
    "adjust_pure_negative" : true,
    "boost" : 1.0
  }
}]; nested: ElasticsearchParseException[could not read the current timestamp]; nested: IllegalArgumentException[features that prevent cachability are disabled on this context];
    at org.elasticsearch.index.query.QueryShardContext.toQuery(QueryShardContext.java:321)
    at org.elasticsearch.index.query.QueryShardContext.toQuery(QueryShardContext.java:304)
    at org.elasticsearch.search.suggest.phrase.PhraseSuggester.innerExecute(PhraseSuggester.java:122)
    at org.elasticsearch.search.suggest.phrase.PhraseSuggester.innerExecute(PhraseSuggester.java:53)
    at org.elasticsearch.search.suggest.Suggester.execute(Suggester.java:39)
    at org.elasticsearch.search.suggest.SuggestPhase.execute(SuggestPhase.java:64)
    at org.elasticsearch.search.query.QueryPhase.execute(QueryPhase.java:95)
    at org.elasticsearch.search.SearchService.loadOrExecuteQueryPhase(SearchService.java:324)
    at org.elasticsearch.search.SearchService.executeQueryPhase(SearchService.java:357)
    at org.elasticsearch.search.SearchService$2.onResponse(SearchService.java:333)
    at org.elasticsearch.search.SearchService$2.onResponse(SearchService.java:329)
    at org.elasticsearch.search.SearchService$3.doRun(SearchService.java:1019)
    at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:732)
    at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37)
    at org.elasticsearch.common.util.concurrent.TimedRunnable.doRun(TimedRunnable.java:41)
    at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:750)
Caused by: ElasticsearchParseException[could not read the current timestamp]; nested: IllegalArgumentException[features that prevent cachability are disabled on this context];
    at org.elasticsearch.common.joda.DateMathParser.parse(DateMathParser.java:60)
    at org.elasticsearch.index.mapper.DateFieldMapper$DateFieldType.parseToMilliseconds(DateFieldMapper.java:318)
    at org.elasticsearch.index.mapper.DateFieldMapper$DateFieldType.isFieldWithinQuery(DateFieldMapper.java:331)
    at org.elasticsearch.index.query.RangeQueryBuilder.getRelation(RangeQueryBuilder.java:459)
    at org.elasticsearch.index.query.RangeQueryBuilder.doRewrite(RangeQueryBuilder.java:466)
    at org.elasticsearch.index.query.AbstractQueryBuilder.rewrite(AbstractQueryBuilder.java:269)
    at org.elasticsearch.index.query.BoolQueryBuilder.rewriteClauses(BoolQueryBuilder.java:474)
    at org.elasticsearch.index.query.BoolQueryBuilder.doRewrite(BoolQueryBuilder.java:441)
    at org.elasticsearch.index.query.AbstractQueryBuilder.rewrite(AbstractQueryBuilder.java:269)
    at org.elasticsearch.index.query.AbstractQueryBuilder.rewrite(AbstractQueryBuilder.java:51)
    at org.elasticsearch.index.query.Rewriteable.rewrite(Rewriteable.java:68)
    at org.elasticsearch.index.query.QueryShardContext.toQuery(QueryShardContext.java:316)
    ... 18 more
Caused by: java.lang.IllegalArgumentException: features that prevent cachability are disabled on this context
    at org.elasticsearch.index.query.QueryShardContext.failIfFrozen(QueryShardContext.java:357)
    at org.elasticsearch.index.query.QueryShardContext.nowInMillis(QueryShardContext.java:391)
    at org.elasticsearch.common.joda.DateMathParser.parse(DateMathParser.java:58)
    ... 29 more
[2023-09-19T17:07:52,876][DEBUG][o.e.a.s.TransportSearchAction] [O1onMaP] All shards failed for phase: [query]
ElasticsearchParseException[could not read the current timestamp]; nested: IllegalArgumentException[features that prevent cachability are disabled on this context];
    at org.elasticsearch.common.joda.DateMathParser.parse(DateMathParser.java:60)
    at org.elasticsearch.index.mapper.DateFieldMapper$DateFieldType.parseToMilliseconds(DateFieldMapper.java:318)
    at org.elasticsearch.index.mapper.DateFieldMapper$DateFieldType.isFieldWithinQuery(DateFieldMapper.java:331)
    at org.elasticsearch.index.query.RangeQueryBuilder.getRelation(RangeQueryBuilder.java:459)
    at org.elasticsearch.index.query.RangeQueryBuilder.doRewrite(RangeQueryBuilder.java:466)
    at org.elasticsearch.index.query.AbstractQueryBuilder.rewrite(AbstractQueryBuilder.java:269)
    at org.elasticsearch.index.query.BoolQueryBuilder.rewriteClauses(BoolQueryBuilder.java:474)
    at org.elasticsearch.index.query.BoolQueryBuilder.doRewrite(BoolQueryBuilder.java:441)
    at org.elasticsearch.index.query.AbstractQueryBuilder.rewrite(AbstractQueryBuilder.java:269)
    at org.elasticsearch.index.query.AbstractQueryBuilder.rewrite(AbstractQueryBuilder.java:51)
    at org.elasticsearch.index.query.Rewriteable.rewrite(Rewriteable.java:68)
    at org.elasticsearch.index.query.QueryShardContext.toQuery(QueryShardContext.java:316)
    at org.elasticsearch.index.query.QueryShardContext.toQuery(QueryShardContext.java:304)
    at org.elasticsearch.search.suggest.phrase.PhraseSuggester.innerExecute(PhraseSuggester.java:122)
    at org.elasticsearch.search.suggest.phrase.PhraseSuggester.innerExecute(PhraseSuggester.java:53)
    at org.elasticsearch.search.suggest.Suggester.execute(Suggester.java:39)
    at org.elasticsearch.search.suggest.SuggestPhase.execute(SuggestPhase.java:64)
    at org.elasticsearch.search.query.QueryPhase.execute(QueryPhase.java:95)
    at org.elasticsearch.search.SearchService.loadOrExecuteQueryPhase(SearchService.java:324)
    at org.elasticsearch.search.SearchService.executeQueryPhase(SearchService.java:357)
    at org.elasticsearch.search.SearchService$2.onResponse(SearchService.java:333)
    at org.elasticsearch.search.SearchService$2.onResponse(SearchService.java:329)
    at org.elasticsearch.search.SearchService$3.doRun(SearchService.java:1019)
    at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:732)
    at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37)
    at org.elasticsearch.common.util.concurrent.TimedRunnable.doRun(TimedRunnable.java:41)
    at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:750)
Caused by: java.lang.IllegalArgumentException: features that prevent cachability are disabled on this context
    at org.elasticsearch.index.query.QueryShardContext.failIfFrozen(QueryShardContext.java:357)
    at org.elasticsearch.index.query.QueryShardContext.nowInMillis(QueryShardContext.java:391)
    at org.elasticsearch.common.joda.DateMathParser.parse(DateMathParser.java:58)
    ... 29 more

字符串
我试着调优查询并提出了这个查询。但似乎什么都不起作用。

qvsjd97n

qvsjd97n1#

如果你确实在6.4上,它看起来像是一个bug的回归,应该是在5.0.1中修复的。解决方法是将范围查询从filter移到must子句中。因为现在每毫秒都会改变一次,所以将它放在filter上下文中不会有任何收获。

0md85ypi

0md85ypi2#

引发的IllegalArgumentException表明Elasticsearch试图在某些上下文中阻止不可缓存的查询。当您使用实时功能(如带有关键字now的日期数学)时,由于now值会随着时间的推移而变化,因此查询变得不可缓存。
您可以在应用程序中计算实际日期值,然后在查询中使用该特定日期,而不是直接在查询中使用now-6M。这样,您就避免了now的动态方面,使查询可缓存。(例如,如果今天的日期是2023-09-19,则6个月前的日期将是2023-03-19,您可以在查询中直接使用此日期。

相关问题