elasticsearch插入索引文档 对数字字符串的处理

对于字符串在搜索匹配的时候,字符串是数字的话需要匹配的是精准匹配,如果是部分匹配字符串的话,需要进行处理,把数字型字符串作为一个字符中的数组表示插入之后显示如下:

如果插入之后显示如画线部分的话,则表示精准匹配

在用clien的java api插入的时候:

String json=null;
            if (req.getTagId() != null) {
            String[] test = req.getTagId().split(",");
            json = JSON.toJSONString(test);
            System.out.println(json);
            }else {
             json = "{"+"\"location\":"+"\""+req.getLatitude()+","+req.getLongitude()+"\""+","
                            +"\"id\":"+"\""+req.getId()+"\""+","+"\"union_id\":"+"\""+req.getUnionId()+"\""+","
                            +"\"tag_id\":"+"\""+req.getTagId()+"\""+","+"\"tag_name\":"+"\""+req.getTagName()+"\""+","
                            +"\"nickname\":"+"\""+req.getNickname()+"\""+","+"\"phone\":"+"\""+req.getPhone()+"\""+","
                            +"\"name\":"+"\""+req.getName()+"\""+","+"\"age\":"+"\""+req.getAge()+"\""+","
                            +"\"code\":"+"\""+req.getCode()+"\""+","+"\"gender\":"+"\""+req.getGender()+"\""+","
                            +"\"province\":"+"\""+req.getProvince()+"\""+","+"\"city\":"+"\""+req.getCity()+"\""+","
                            +"\"coountry\":"+"\""+req.getCountry()+"\""+","+"\"avatarUrl\":"+"\""+req.getAvatarUrl()+"\""+","
                            +"\"app_code\":"+"\""+req.getAppCode()+"\""+"}";
                            System.out.println(json);
            }

通过这种插入方式,默认的是json,在json验证的时候显示的json,而在table格式下不能显示:因此通过类的字符形式插入在显示table格式:

public boolean insertIndexUserDoc(String indexname, String type,List<UserEntity> list)
            throws ApplicationException, Exception {
        // TODO Auto-generated method stub
        String location=null;
        JestClient jestHttpClient = Connection.getClient();
        JestResult jr = null;
        try {
            
//        Bulk.Builder bulk = new Bulk.Builder().defaultIndex(indexname)
//                .defaultType(type);
        for(UserEntity req:list){
            UserEntity user = new  UserEntity();
            user.setId(req.getId());
            user.setUnionId(req.getUnionId());
            user.setTagName(req.getTagName());
            user.setLocation(req.getLatitude().toString()+","+req.getLongitude().toString());
            user.setAge(req.getAge());
            user.setPhone(req.getPhone());
            user.setCode(req.getCode());
            user.setGender(req.getGender());
            user.setProvince(req.getProvince());
            user.setCity(req.getCity());
            user.setCountry(req.getCountry());
            user.setAppCode(req.getAppCode());
            user.setAvatarUrl(req.getAvatarUrl());
            user.setNickname(req.getNickname());
            if (req.getTagId()!=null){
                  String[] mids=req.getTagId().split(",");
                  user.setTagId(JSON.toJSONString(mids));;
            }
             jr=jestHttpClient.execute(new Index.Builder(user)
                .index("omouserinfo").id(user.getId())
                .type("omouserinfo").build());
             boolean flag = jr.isSucceeded();
                System.out.println(flag);
        }
        return true;
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
            return false;
        }    
    }

其中,      jr=jestHttpClient.execute(new Index.Builder(user)
                .index("omouserinfo").id(user.getId())
                .type("omouserinfo").build());这个设置的id,如果不设置,在批量插入处理的时候,id第一次自动分配,后面容易冲突

第一段
代码如果批量插入时候可以不设置id,由于id可以在一次之后自增id,不需要设置id;因此,在批量单条处理的时候需要加id。执行之后如下:

在查询的时候实现精准匹配:

花了一上午的时间,做出来,小小激动一下啊!

时间: 2025-01-02 14:59:19

elasticsearch插入索引文档 对数字字符串的处理的相关文章

分布式搜索elasticsearch 索引文档的增删改查 入门

1.RESTful接口使用方法 为了方便直观我们使用Head插件提供的接口进行演示,实际上内部调用的RESTful接口. RESTful接口URL的格式: http://localhost:9200/<index>/<type>/[<id>] 其中index.type是必须提供的. id是可选的,不提供es会自动生成. index.type将信息进行分层,利于管理. index可以理解为数据库:type理解为数据表:id相当于数据库表中记录的主键,是唯一的. 2.索引文

协议文档里要求字符串要用GBK编码

来自森大科技官方博客http://www.cnsendblog.com/index.php/?p=328GPS平台.网站建设.软件开发.系统运维,找森大网络科技!http://cnsendnet.taobao.com unicode指的是一种编码字符集,即所谓的万国码,而UTF-8,UTF-16(LE,BE)都只是针对这种字符集的一种编码方式.  为什么要采用Unicode字符集呢,因为它能表示的字符几乎包含了世界上所有的字符,这在需要国际化的应用场景中可以很方便使用,一种字符集就可以表示所有的

mongoDB 获取最后插入的文档的ObjectID/_id方法

http://stackoverflow.com/questions/3338999/get-id-of-last-inserted-document-in-a-mongodb-w-java-driver mongoDB api就可以实现,请仔细查看集合insert方法的源代码 a.文档插入后可以获取到插入的文档的ObjectID 代码: BasicDBObject doc = new BasicDBObject( "name", "Matt" ); collect

mongodb中插入一个文档

第一步:打开cmd,运行mongo.exe 第二步:引用需要加载的数据库 use 数据库名  //如果数据库名不存在,mongodb会自动建立数据库 第三步:赋值创建一个文档对象 post={"title":"hellow"} 第四步:提交插入文档 db.表名.insert(post)    //如果表名不存在,mongodb会自动建立表 第五步:查询 db.表名.find() mongodb中插入一个文档

增删改查 elasticsearch中的文档API 的使用

文档为何物?一个对象 就相当于mysql的一个record记录 参考: http://www.learnes.net/data/README.html curl 192.168.100.10:9200?preety curl 192.168.100.10:9200/_count?pretty shell 中的curl的用法 -X 指定请求方法默认是  -XGET -i 返回数据的时候,也一并返回请求结果 -d 发送的数据 这个返回值意味着我们的索引请求已经被成功创建,其中还包含了_index,

joomla网站内插入doc文档

最近我的网站又出了问题,之前用joomla做的网站,由于要放doc文档,后来想尽办法终于用iframe的办法,先把文档传到scribd网,然后把文档嵌到网站里去,但是狗血的,去年五月份的时候我们伟大的GWF居然把scribd给墙了,然后发现之前做的一个网站joomla2.5的用slideshare的一个插件(plg_content_slideshare25_1.2.0_j25.zip)可以用,虽然墙了slideshare的网站,但是这个插件却还可以把内容抓过来.!!!但是!!!就在今年五一节过了

将JavaScript语句插入HTML文档

(1) 使用 <SCRIPT> 标签将语句嵌入文档 <script type="text/javascript"> function Que() { } </script> (2) 将 JavaScript 源文件链接到 HTML 文档中 <SCRIPT SRC = "test.js"></SCRIPT> 原文地址:https://www.cnblogs.com/wjrelax/p/8902187.html

分布式搜索elasticsearch 索引文档的检索 入门

1.首先将如下数据提交到ES中建立索引 {"number":32768,"singer":"杨坤","size":"5109132","song":"今夜二十岁","tag":"中国好声音","timelen":319} {"number":32769,"singer"

ElasticSearch中实现文档操作后立即被搜索到

ElasticSearch一般称为近实时的大数据处理引擎,为什么是近实时呢?原因是当我们提交索引数据时,实际上只是写到了Buffer里面,并不是立即可搜索的,最多需要等1秒才可搜索(index.refresh_interval由这个参数控制,可以通过动态API自定义设置,或在建索引时在settings里面设置),还有一点,当存在副本时,只保证主分片写入成功写入请求就会返回,此时搜索请求如果分配到了副本上,有可能是搜索不到的. 那怎么做到实时搜索呢,在Java的UpdateRequest.Inde