java esclient query,使用ElasticSearch Java API对日期进行模糊查询(Fuzzy query on dates with ElasticSearch Java A...

使用ElasticSearch Java API对日期进行模糊查询(Fuzzy query on dates with ElasticSearch Java API)

我正在尝试通过ElasticSearch Java API执行以下查询

{

"query" : {

"fuzzy" : {

"dateOfBirth" : {

"value" : "1944-11-30",

"fuzziness" : "365d"

}

}

}

}

我不明白如何在这种查询中指定365天的fuzzines值。

I'm trying to perform the following query through ElasticSearch Java API

{

"query" : {

"fuzzy" : {

"dateOfBirth" : {

"value" : "1944-11-30",

"fuzziness" : "365d"

}

}

}

}

I doesn't understand how to specify the fuzzines value for 365 days in this kind of query.

原文:https://stackoverflow.com/questions/35406113

更新时间:2019-11-30 05:04

最满意答案

你可以用这个:

FuzzyQueryBuilder queryBuilder = fuzzyQuery("dateOfBirth" ,"1944-11-30" ).fuzziness(Fuzziness.build("365d"))

希望这可以帮助

You can use this:

FuzzyQueryBuilder queryBuilder = fuzzyQuery("dateOfBirth" ,"1944-11-30" ).fuzziness(Fuzziness.build("365d"))

Hope this helps

2016-02-15

相关问答

如果您希望这两个查询返回相同的结果,则需要使用相同类型的查询。 在您的Sense查询中,您正在执行匹配查询: "query": {

"match" : {

"name" : "some string"

}

}

但在Java代码中,您正在执行termQuery: QueryBuilder qb = QueryBuilders.termQuery("name", "some string");

因此,要回答您的问题,请在Java代码中使用匹配查询: QueryBui

...

我选择创建一个新查询而不是修改现有查询。 MultiMatchQueryBuilder fuzzyMmQueryBuilder = multiMatchQuery(

theUsersQueryString, "field1", "field2", ... , "fieldn").fuzziness("AUTO");

BoolQueryBuilder b = boolQuery().should(fuzzyMmQueryBuilder);

SearchRequest

...

你可以用这个: FuzzyQueryBuilder queryBuilder = fuzzyQuery("dateOfBirth" ,"1944-11-30" ).fuzziness(Fuzziness.build("365d"))

希望这可以帮助 You can use this: FuzzyQueryBuilder queryBuilder = fuzzyQuery("dateOfBirth" ,"1944-11-30" ).fuzziness(Fuzziness.build("365d")

...

你需要这样的东西(java8): public class MyQueryPlugin extends Plugin implements SearchPlugin {

@Override public List> getQueries() {

return Arrays.asList(

new QuerySpec<>("my_query", MyQueryBuilder::new, MyQueryBuilder:

...

啊哈。 可以像这样添加: should(QueryBuilders.fuzzyQuery(Company.FIELD_NAME, query).maxExpansions(1).prefixLength(query.length() - 1)

Aha. Can add like this: should(QueryBuilders.fuzzyQuery(Company.FIELD_NAME, query).maxExpansions(1).prefixLength(query.length()

...

您通过Java发送的请求格式不正确:没有“facets”:{“0”:{...}}参与其中。 (至少缺少'0')。 因此服务器似乎忽略了那部分,只给你一堆原始条目(默认输出) The problem was the type of request, I had to send a POST request instead of a GET one. Used this code : String url = "http://10.60.74.134:9200/logstash-2015.04.09/

...

按照以下基础知识连接到您的ES群集: https : //www.elastic.co/guide/en/elasticsearch/client/java-api/current/client.html 您的查询将向管理界面询问英语分析器的AnalyzeRequest(索引,查询): ESClient.admin().indices().analyze(new AnalyzeRequest("snomed_v1", "12 O'clock, superior margin").analyzer(

...

这种类型的查询使用query_string查询。 java代码应该如下所示: SearchRequestBuilder searchRequestBuilder = new SearchRequestBuilder(client);

searchRequestBuilder.setIndices("mongoindex");

searchRequestBuilder.setTypes("files");

QueryStringQueryBuilder queryStringQueryBuilder

...

它应该是QueryBuilders.fuzzyQuery("name", "kimchy").maxExpansion(5) 。 但是,遗憾的是,目前缺少maxExpansion()方法。 因此,在合并此拉取请求之前,发送此查询的唯一方法是直接在json中表达它。 您可以使用XContentBuilder来完成。 It supposed to be QueryBuilders.fuzzyQuery("name", "kimchy").maxExpansion(5). But, unfortunat

...

您需要为此使用query_string查询。 QueryStringQueryBuilder qs = QueryBuilders.queryStringQuery("name_s:'Joe Bloggs' AND age_i:15");

client.prepareSearch(index).setQuery(qs);

You'd need to use a query_string query for this. QueryStringQueryBuilder qs = QueryBuild

...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值