gpt4 book ai didi

java - Elasticsearch,点值

转载 作者:行者123 更新时间:2023-11-30 06:40:08 25 4
gpt4 key购买 nike

我使用的是 ES 2.2

我在创建搜索(通过 Java API)时遇到问题。在我的索引中我有文档:

public class PersonDocument {

private String uuid;
private String name;
private String type;

//setters getters
}

问题是搜索 - 我想搜索所有具有匹配类型的人。我的java查询:

SearchResponse searchResponse = client
.prepareSearch("person")
.setTypes("person")
.setQuery(QueryBuilders.boolQuery().must(QueryBuilders.matchQuery("type", type)))
.execute()
.actionGet();

我的一些文档的类型中的值带有点。但是,当我尝试使用 type = grand.parent 进行搜索时,查询将返回 typeparentgrand 的对象仅。

经过一番尝试,我添加了 .operator(Operator.AND),它返回了包含两个单词的文档。但它仍然不是正确的解决方案,因为它将返回 parent.grand 类型的文档。

如何解决这个问题?

编辑:

这是来自curl -XGET 'localhost:9200/person/_mapping/?pretty'的映射

{
"person" : {
"mappings" : {
"person" : {
"properties" : {
"name" : {
"type" : "string"
},
"type" : {
"type" : "string"
},
"uuid" : {
"type" : "string"
}
}
}
}
}
}

最佳答案

您的字段类型是文本,它将被分析为grandparent。根据您的用例,您可以将参数类型设置为关键字,或者如果您想进行全文搜索,您应该定义自定义分词器,该分词器在空间上进行分词。
最好有索引映射设置

关于java - Elasticsearch,点值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44495399/

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