gpt4 book ai didi

java - ElasticSearch使字段无法从Java搜索

转载 作者:行者123 更新时间:2023-12-02 22:54:14 24 4
gpt4 key购买 nike

我目前正在通过Java Application进行 flex 搜索。我知道如何使用RestHighLevelClient索引Java pojo。我如何仅在新字段而不是完整的pojo上进行搜索?

    public class Employee{ 
private long id;
private String name;
private String designation;
private String address; //want to index but not searchable in elastic search
}

我的索引编制代码在下面可以正常工作:
 public String saveToEs(Employee employee) throws IOException {
Map<String, Object> map = objectMapper.convertValue(employee, Map.class);

IndexRequest indexRequest =
new IndexRequest(INDEX, TYPE, employee.getId().toString()).source(map, XContentType.JSON);


IndexResponse indexResponse = client.index(indexRequest, RequestOptions.DEFAULT);

我需要在java中执行此操作。有任何帮助或好的链接吗?

最佳答案

RestHighLevelClient编写另一个答案。对于不使用Rest客户端的人来说,另一个答案很有用,并且在第一个答案中添加它会使时间过长。

注意:您正在传递ES 7.X中不推荐使用的type,并且我使用的是ES 7.X版本,因此我的代码符合7.X。

        CreateIndexRequest request = new CreateIndexRequest("employee");
Map<String, Object> name = new HashMap<>();
name.put("type", "text");
Map<String, Object> address = new HashMap<>();
address.put("type", "text");
address.put("index", false);

Map<String, Object> properties = new HashMap<>();
properties.put("name", name);
properties.put("address", address);
Map<String, Object> mapping = new HashMap<>();
mapping.put("properties", properties);
request.mapping(mapping);
CreateIndexResponse createIndexResponse = client.indices().create(request, RequestOptions.DEFAULT);

重要事项
  • 我仅出于说明目的使用了2个字段,其中之一是无法搜索的address字段,而我使用的是address.put("index", false);,而name是可搜索的字段,并且此选项不存在。
  • 我已经使用official ES doc中可用的Map方法创建了index mapping
  • 您可以使用mapping REST API检查此代码创建的映射。
  • 下面是在我的系统中为此代码生成的映射,您可以看到index: false已添加到地址字段中。

  • {
    "employee": {
    "mappings": {
    "properties": {
    "address": {
    "type": "text",
    "index": false
    },
    "name": {
    "type": "text"
    }
    }
    }
    }
    }

  • 您可以使用上一个答案中提到的相同搜索JSON来测试它是否不可搜索。
  • 关于java - ElasticSearch使字段无法从Java搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60778332/

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