gpt4 book ai didi

java - java:Elasticsearch中不区分大小写的搜索

转载 作者:行者123 更新时间:2023-12-02 22:29:04 25 4
gpt4 key购买 nike

我试图找出索引中的文档,而不管索引中的字段值是小写还是大写。

这是我使用自定义分析器设计的索引结构。我是分析仪的新手,我可能错了。看起来是这样的:

POST arempris/emptagnames
{
"settings": {
"analyzer": {
"lowercase_keyword": {
"type": "custom",
"tokenizer": "keyword",
"filter": "lowercase"
}
}
},
"mappings" : {
"emptags":{
"properties": {
"employeeid": {
"type":"integer"
},
"tagName": {
"type": "text",
"fielddata": true,
"analyzer": "lowercase_keyword"
}
}
}
}
}

在Java后端中,我使用BoolQueryBuilder首先使用employeeids查找标记名。这是我编写的用于获取值的代码:
BoolQueryBuilder query = new BoolQueryBuilder();
query.must(new WildcardQueryBuilder("tagName", "*June*"));
query.must(new TermQueryBuilder("employeeid", 358));

SearchResponse response12 = esclient.prepareSearch(index).setTypes("emptagnames")
.setQuery(query)
.execute().actionGet();

SearchHit[] hits2 = response12.getHits().getHits();
System.out.println(hits2.length);

for (SearchHit hit : hits2) {
Map map = hit.getSource();
System.out.println((String) map.get("tagName"));
}

当我以小写形式指定要搜索的标签为“june”时,它工作正常,但是在WildCardQueryBuilder中以大写形式将其指定为“June”时,没有任何匹配。

让我知道我在哪里犯了错误。非常感谢您的帮助,并在此先感谢。

最佳答案

Elasticsearch中有两种查询

  • 术语级别查询->在其中搜索确切术语。 https://www.elastic.co/guide/en/elasticsearch/reference/current/term-level-queries.html
  • 全文查询->首先分析查询词,然后搜索它。 https://www.elastic.co/guide/en/elasticsearch/reference/current/full-text-queries.html

  • 全文查询的规则是
  • 首先,它在查询
  • 中寻找search_analyzer
  • 如果未提及,则它将索引时间分析器用于该字段以进行搜索。

  • 因此,在这种情况下,您需要将查询更改为此
    BoolQueryBuilder query = new BoolQueryBuilder();
    query.must(new QueryStringQueryBuilder("tagName:*June*"));
    query.must(new TermQueryBuilder("employeeid", 358));

    SearchResponse response12 = esclient.prepareSearch(index).setTypes("emptagnames")
    .setQuery(query)
    .execute().actionGet();

    SearchHit[] hits2 = response12.getHits().getHits();
    System.out.println(hits2.length);

    for (SearchHit hit : hits2) {
    Map map = hit.getSource();
    System.out.println((String) map.get("tagName"));
    }

    关于java - java:Elasticsearch中不区分大小写的搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48746480/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com